Я пытаюсь создать цикл в функциональном узле в Node-Red, который в основном действует для меня как таймер обратного отсчета. Прямо сейчас, когда я запускаю этот узел, я получаю только один вывод от узла с msg.playload, говорящим «Назад через 15 минут».
Я хочу получить 15 выходов один за другим, которые говорят: «Назад через 15 минут», «Назад через 14 минут» и т. д. Как только я смогу получить это, я добавлю задержку, чтобы цикл for ждал 1 минуту каждый раз, когда он запускается.
var totalMinutes = 15
for (var i = 0; i < 15; i++){
var minutesLeft = totalMinutes - [i];
msg.payload = {
"profile": {
"status_text": "Back in " + minutesLeft + " minutes",
"status_emoji": ":coffee:",
"status_expiration": 0
}
};
return [msg.payload];
}
return [msg];



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вы останавливаете выполнение кода, используя return [msg.payload];. Удалите эту строку, и она должна распечататься так, как вы этого хотите.
Обратите внимание, что распечатка не эквивалентна 1 секунде. Для этого можно завернуть в setInterval()
оформить заказ https://www.w3schools.com/js/js_timing.asp для более подробной информации.
Когда я делаю это, я получаю только результаты последней итерации. Показывает, что я вернусь через 1 минуту, но пропускает 15-2. Я хочу, чтобы функциональный узел выводил 15 разных раз.
Разобрался с этим. Мне пришлось удалить возврат, но затем я также добавил node.send(msg); в конец цикла for, и теперь я получаю именно то, что хотел.
Вам также нужно вернуть весь
msgобъект, а не толькоmsg.payload