cleatInterval () не останавливая setInterval () в Node.js

голоса
0

Я работаю на facebook боте в Node.js (новом для Node.js) и у меня есть проблемы. Когда пользователь отправляет последнее сообщение мне нужно обнаружить и установить напоминание (давайте SY она должна напоминать человеку в одну минуту)

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

Проблема заключается в том, что clearTimeout не убивают SetTimeout, когда пользователь отправляет еще одно сообщение (когда пользователь отправляет еще одно сообщение эта функция который вызывается снова и shoutld остановить предыдущий таймер и начать новый) Этот код remindes человека в одну минуту, но это не остановит напоминать

Задан 28/11/2017 в 00:18
источник пользователем
На других языках...                            


1 ответов

голоса
0

Вы должны объявить таймер var t = setTimeout(() => {...}, 60000);перед вызовом clearTimeoutи использовать clearTimeoutна переменном t. В фрагменте коды, clearTimeoutне ссылаются на переменном таймер t.

Так что-то, как это должно работать вместо того, чтобы:

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

и ваш 1 мин таймер будет отменен.

В контексте вашего вопроса, я полагаю , вы хотите , чтобы остановить таймер напоминания от выполнения после того , как пользователь отправил вам сообщение. Так что вам просто нужно следить за ваш переменный таймер tпри запуске таймера и после того , как требуется сообщение получено, остановить этот таймер tс clearTimeout(t). Таким образом, правильная ссылка на таймер будет остановлен , и пользователь не будет напоминать неоднократно.

Ответил 12/01/2018 в 06:42
источник пользователем

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