Я использую NodeRed с Home Assistant. У меня есть веб-крючок, который я могу отправить с физического устройства, которое вызывает функциональный узел красного цвета. Узел функции выглядит следующим образом:
var i = 1;
var myTimer = setInterval(function setSlackStatus(){
if (i < 14){
var minutesLeft = totalMinutes - [i];
msg.payload = {
"profile": {
"status_text": "Back in " + minutesLeft + " minutes",
"status_emoji": ":coffee:",
"status_expiration": 0
}
};
node.send(msg);
i++;
} else if (i == 14 ){
var minutesLeft = totalMinutes - [i];
msg.payload = {
"profile": {
"status_text": "Back in " + minutesLeft + " minute",
"status_emoji": ":coffee:",
"status_expiration": 0
}
};
node.send(msg);
i++;
} else if (i == 15){
msg.payload = {
"profile": {
"status_text": "I'll be back any second now",
"status_emoji": ":coffee:",
"status_expiration": 0
}
};
node.send(msg);
clearInterval(myTimer);
i = 1;
}
}, 60000)
msg.payload = {
"profile": {
"status_text": "Back in 15 minutes",
"status_emoji": ":coffee:",
"status_expiration": 0
}
};
if (msg.clearTimer == "true") {
msg.payload = "Clear Timer signal received.";
clearInterval(myTimer);
}
return [msg];
Когда я отправляю веб-крючок, эта функция в основном перебирает функцию, которая обновляет мой статус Slack раз в минуту, пока я не вернусь.
What I 'Сейчас я ищу возможность очистить этот цикл на полпути, если это необходимо. Поэтому я создал второй webhook, который устанавливает msg.clearTimer в значение «true», а затем запускает этот же узел. Однако, хотя в отладочном узле я получаю сообщение о том, что был получен сигнал сброса таймера, функция продолжает вызываться с интервалом в 1 минуту, пока она не пройдет весь цикл.
То, что я хочу знать, это почему. После запуска этой функции зацикливания кажется, что отменить ее невозможно. Любой совет будет принята с благодарностью.