在JS循环中正确使⽤async与await
记录下⼯作中碰到的问题
准备⼀个例⼦
假设你需要在循环中进⾏请求,在请求返回结果后再进⾏下⼀个循环的请求,这⾥我们使⽤ setTimeout 来模拟。
在 forEach 循环中使⽤ await
⼀开始我使⽤的是forEach循环
我期望打印以下内容:
"start"
"10"
"20”
"30”
"end”
但实际打印以下内容:
"start"
"end"
"10"
"20"
"30"
因为JavaScript 中的 forEach不⽀持 promise 感知,也不⽀持 async 和await,所以不能在 forEach 使⽤ await 。在 for 循环中使⽤ await
我期望打印以下内容:
"start"
"10"
"20”
"30”
"end”
结果正如我所料的那样:
"start"
"10"
"20”
"30”
"end”
因吹斯汀那我们再来看下其他循环的结果?
在 for of 循环中使⽤ await
结果还是如我所料的那样:
"start"
"10"
"20”
"30”
"end”
在 while 循环中使⽤ await
结果还是如我所料的那样:
"start"
"10"
"20”
"30”
await和async使用方法"end”
结论
1. 如果你想连续执⾏await调⽤,请使⽤for循环(或任何没有回调的循环)。
2. 永远不要和forEach⼀起使⽤await,⽽是使⽤for循环(或任何没有回调的循环)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论