cleatInterval () ikke stoping setInterval () i node.js

stemmer
0

Jeg jobber med facebook bot i node.js (nye til node.js) og jeg har problem. Når brukeren sender siste meldingen jeg trenger å oppdage den og sette påminnelse (la oss sy det bør minne person i ett minutt)

if(!candidate.finished){
                clearTimeout(JSON.parse(candidate.timerId));
                var t = setTimeout(()=>{
                    candidate.timerId = JSON.stringify(t)
                    console.log(STRINGIFY  + candidate.timerId)
                    candidate.save();
                    sendQuickReplies(sender,Do you want to continue application process?,['Yes','No'],token);
                }, 60000);
 }

Problemet er at cleartimeout ikke dreper setTimeout når brukeren sender en ny melding (når brukeren sender en annen melding denne funksjonen blir kalt alt om igjen, og det shoutld stoppe forrige tidtaker og starte ny) Denne koden Remindes person i ett minutt, men det vil ikke stoppe minner

Publisert på 28/11/2017 klokken 00:18
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Du må erklære din timeren var t = setTimeout(() => {...}, 60000);før du ringer clearTimeoutog bruker clearTimeoutpå variabelen t. I kodebiten, clearTimeoutikke refererer timeren variabel t.

Så noe som dette skal fungere i stedet:

var t = setTimeout(() => {...}, 60000);
clearTimeout(t);

og din 1 min timeren vil bli kansellert.

I sammenheng med spørsmålet ditt, jeg antar at du ønsker å stoppe påminnelsen timer fra å kjøre når brukeren har sendt deg en melding. Så du trenger bare å holde styr på tidsvariabel tnår du starter tidtakeren og når den nødvendige meldingen er mottatt, stoppe den timeren tmed clearTimeout(t). På den måten vil den korrekte referanse til timeren stoppes og brukeren vil ikke bli minnet gjentatte ganger.

Svarte 12/01/2018 kl. 06:42
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more