Javascript 如何使用async/wait创建同步循环

Javascript 如何使用async/wait创建同步循环,javascript,asynchronous,promise,async-await,Javascript,Asynchronous,Promise,Async Await,我试图用async await创建一个“类似同步的循环”,但我得到了一个奇怪的行为,即在第一次承诺之后获得所有结果 这是我的测试用例。看看你是如何把所有的东西都放在一起的,而不是一个一个地打印出来 const p=()=>新承诺((解析)=>{ 设置超时(()=>{ 解析(Math.floor(Date.now()/1000)) },1000) }) 常数测试=()=>{ [1,2,3,4,5,6,7,8,9,10].map(异步()=>{ 常数e=等待p(); 控制台日志(e) }); }

我试图用async await创建一个“类似同步的循环”,但我得到了一个奇怪的行为,即在第一次承诺之后获得所有结果

这是我的测试用例。看看你是如何把所有的东西都放在一起的,而不是一个一个地打印出来

const p=()=>新承诺((解析)=>{
设置超时(()=>{
解析(Math.floor(Date.now()/1000))
},1000)
})
常数测试=()=>{
[1,2,3,4,5,6,7,8,9,10].map(异步()=>{
常数e=等待p();
控制台日志(e)
});
}

test()就像我在评论中提到的,map不知道承诺。还有其他选择,如
蓝鸟.map
,。。但是简单的选择是使用for循环

按照您的示例,如果您想要循环一个数组,您也可以使用for of
变量。更改为
for(让a=1;新承诺((解析)=>{
设置超时(()=>{
解析(Math.floor(Date.now()/1000))
},1000)
})
常量测试=异步()=>{
for(常数a为[1,2,3,4,5,6,7,8,9,10]){
常数e=等待p();
控制台日志(e)
}  
}

test();
map不适用于
aync/await
,但如果您使用的是bluebird promise,它确实有一个基于promise的map。或者,在您的示例中,for循环也可以工作。