JS关于async await一个巨难的问题
代码如下
// 构造一个Promise对象
function timeout(ms){
return new Promise((res,rej)=>{
setTimeout(()=>{
res()
},ms)
})
}
// 假定一个数组
const arr = [1,2,3]
// async函数
async function run(){
arr.forEach(async ()=>{
await timeout(1000)
})
console.log( '3秒过去了' )
}
run()
我希望‘3秒过去了’
应该在3秒后打印出来,而上述代码运行后会瞬间打印
看下哪位大神能最先解决我的这个难题,以最优解者为胜,若差不多则以最先解出者为胜。
前提条件:必须使用
arr.forEach
,必须使用async
await
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
建议直接用
for of
代替forEach
,一定要用forEach
得另外去封装一个函数 得不偿失你是对forEach有什么误解。。。它并不会等传入的异步函数执行结束再遍历下一个元素。
问题提的确实符合你的名字,感觉在说相声