【发布时间】:2018-04-12 16:57:16
【问题描述】:
我想在 while 循环内的 setTimeout 中保持 nodejs 执行。我使用了异步瀑布函数,但它在 while 循环中不起作用。所以我使用了下面的代码:-
var i = 3;
while(i> 0)
{
setTimeout(function(){
console.log('start', i);
setTimeout(function(){ console.log('timeout');}, 1000);
console.log('end', i);
i--;
}, 1000);
}
console.log("execution ends");
但我没有得到预期的输出。 我的预期输出将是:-
start3
timeout
end3
start2
timeout
end2
start1
timeout
end1
execution ends
【问题讨论】:
-
你知道
setTimeout()没有阻塞。它只是安排一些东西在未来运行,然后你的其余代码继续运行。这意味着您的while循环会一直运行设置计时器,并且永远不会给它们运行的机会。 -
不要运行while循环!!
标签: javascript node.js async.js