Цикл for в узле Function возвращает только первую итерацию

Я пытаюсь создать цикл в функциональном узле в 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];

Вам также нужно вернуть весь msg объект, а не только msg.payload

hardillb 12.07.2019 22:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
4 268
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы останавливаете выполнение кода, используя return [msg.payload];. Удалите эту строку, и она должна распечататься так, как вы этого хотите.

Обратите внимание, что распечатка не эквивалентна 1 секунде. Для этого можно завернуть в setInterval()

оформить заказ https://www.w3schools.com/js/js_timing.asp для более подробной информации.

Когда я делаю это, я получаю только результаты последней итерации. Показывает, что я вернусь через 1 минуту, но пропускает 15-2. Я хочу, чтобы функциональный узел выводил 15 разных раз.

Nick 12.07.2019 22:55

Разобрался с этим. Мне пришлось удалить возврат, но затем я также добавил node.send(msg); в конец цикла for, и теперь я получаю именно то, что хотел.

Nick 12.07.2019 23:11

Другие вопросы по теме