Async for loop Node.js

Async for loop Node.js,node.js,Node.js,我试图使循环在console.log之前运行,但首先运行的是console.log for(let i = 0; i < 10; i++){ setTimeout(function(){ console.log("hello " + i); }, 500); } console.log("Bye bye"); for(设i=0;i{//使代码异步的声明 for(设i=0;isetTimeout(function(){ console.log(“hel

我试图使循环在
console.log
之前运行,但首先运行的是
console.log

for(let i = 0; i < 10; i++){
    setTimeout(function(){ 
        console.log("hello " + i); 
    }, 500);
}

console.log("Bye bye");
for(设i=0;i<10;i++){
setTimeout(函数(){
console.log(“hello”+i);
}, 500);
}
控制台日志(“再见”);

由于javascript中的大多数函数都是异步的(最著名的是
承诺
设置超时
设置间隔
),为了避免阻塞流执行,循环不会等待
设置超时
函数继续执行

您可以通过使用
async/await
函数来执行类似操作,该函数将在继续之前等待解决承诺,请小心(不推荐使用)

如果要实现这一目标,可以执行以下操作:

;(async()=>{//使代码异步的声明
for(设i=0;i<10;i++){
等待新的承诺(resolve=>setTimeout(function(){
console.log(“hello”+i);
解决();
}, 500));
}
控制台日志(“再见”);

})();删除
设置超时(…)
!!!,这将始终等待提供的时间(在您的情况下为500)过去,然后再在其中运行代码。这就是异步设置超时的工作原理。尝试了解更多关于如何在node js中处理事件循环和异步事物的信息,您将找到您自己问题的答案。循环确实首先运行,但在500毫秒之前完成。这是一个简单的示例,与我正在做的不同,“因为javascript是一种异步语言”,它不是异步的。有一些异步操作,但大多数代码是同步运行的,并且是确定性的<代码>x=1;x+=2;y=x+3
将始终以相同的顺序计算。很好的一个,我应该知道函数可以是异步的,以不阻塞代码流