首页 > 解决方案 > 函数节点中的 for 循环仅返回第一次迭代

问题描述

我正在尝试在 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];

标签: javascriptnode-red

解决方案


您正在使用return [msg.payload];. 删除该行,它应该以您想要的方式打印出来。

请注意,打印输出不等于 1 秒。为此,您可以包装setInterval()

结帐https://www.w3schools.com/js/js_timing.asp了解更多详情。


推荐阅读