cleatInterval () nicht stoping setInterval () in node.js

stimmen
0

Ich arbeite auf Facebook bietet in node.js (neu node.js) und ich habe ein Problem. Wenn der Benutzer letzte Meldung sendet ich brauche es zu erkennen und setzen Erinnerung (wir sy sollte es Person in einer Minute erinnern)

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);
 }

Problem ist, dass clear nicht SetTimeout töten, wenn der Benutzer eine andere Nachricht sendet (wenn der Benutzer eine andere Nachricht sendet diese Funktion noch einmal aufgerufen wird und es shoutld vorherigen Timer stoppen und neu starten) Dieser Code remindes Person in einer Minute, aber es wird nicht aufhören daran zu erinnern

Veröffentlicht am 28/11/2017 um 00:18
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Sie benötigen eine Timer zu erklären , var t = setTimeout(() => {...}, 60000);bevor Sie anrufen clearTimeoutund verwenden Sie clearTimeoutauf die Variable t. In Ihrem Code - Schnipsel, clearTimeoutReferenzierung ist nicht den Timer - Variable t.

So etwas wie dies sollte stattdessen arbeiten:

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

und Ihr 1 min-Timer wird abgebrochen.

Im Zusammenhang mit der Frage, nehme ich an Sie die Erinnerung Timer von der Ausführung , sobald der Benutzer eine Nachricht gesendet hat , beenden mögen. So brauchen Sie nur den Überblick über Ihre Timer - Variable zu halten , twenn Sie Ihre Timer starten und sobald die erforderliche Nachricht empfangen wird, dass die Timer stoppen tmit clearTimeout(t). Auf diese Weise wird der korrekte Bezug auf die Zeit angehalten und der Benutzer wird nicht immer wieder daran erinnert werden.

Beantwortet am 12/01/2018 um 06:42
quelle vom benutzer

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