node.send没有break的效果,只是将消息从输出节点输出。setTimeout() 是属于 window 的方法,该方法用于在指定的毫秒数后调用函数或计算表达式。也就是说,它要等待60秒后,才会调用匿名函数,此时的i早已经变成了2,所以所有的输出都会是2;要达到想要的效果,要把setTimeout()封装到一个function中,然后重新生成一个msg,再给setTimeout()延迟发送就可以了;
参考:
var all = ["a","b","c"];
for(var i=0;i<all.length;i++){
delaySend(i, all[i]);
}
function delaySend(topic, last){
let newMsg = {"topic":topic , "last":last};
setTimeout(() => node.send(newMsg), 1000);
}
|