cleatInterval () nie stoping setInterval () w node.js

głosy
0

Pracuję na facebook bot w node.js (nowe do node.js) i mam problem. Gdy użytkownik wysyła ostatnią wiadomość muszę go i ustaw przypomnienia wykryć (niech sy powinny przypominać osobę w ciągu jednej minuty)

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 polega na tym, że clearTimeout nie zabijają setTimeout gdy użytkownik wysyła kolejną wiadomość (gdy użytkownik wysyła kolejną wiadomość ta funkcja jest wywoływana na nowo i shoutld zatrzyma poprzedni stoper i rozpocząć nową) Ten kod remindes osobę w jedną minutę, ale nie przestaną przypominać

Utwórz 28/11/2017 o 00:18
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

Trzeba zadeklarować swój licznik var t = setTimeout(() => {...}, 60000);przed wywołaniem clearTimeouti używać clearTimeoutna zmienną t. W fragmencie kodu, clearTimeoutnie odwołuje się do zmiennej timera t.

Więc coś jak to powinno działać zamiast:

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

a 1 min czasomierz zostanie anulowane.

W kontekście pytania, przypuszczam, chcesz zatrzymać stoper przypomnienia z wykonaniem gdy użytkownik wysłał Ci wiadomość. Więc wystarczy śledzić zmiennej timera tpo uruchomieniu timera i po otrzymaniu wymaganej wiadomość, że zatrzymać stoper tz clearTimeout(t). W ten sposób prawidłowe odniesienie do czasomierz zostanie zatrzymany, a użytkownik nie będzie wielokrotnie przypominał.

Odpowiedział 12/01/2018 o 06:42
źródło użytkownik

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