For 循环、forEach、map() 对 async await 处理有差异
写在前面:async await
在forEach
内无效,在for
循环内有效,在map()
中需要用Promise.All
执行
- 首先因为
forEach
是没有return
返回值的(forEach
内部实现只是简单的回调),await
需要依赖异步函数的return
返回值去执行。 - 而
forEach
里面的回调函数因为加了async
的原因,所以会默认返回一个Promise
,但是因为forEach
的实现并没有返回值,所以导致返回的这个Promise
对象没人去管了。 总结:forEach
只支持同步,不支持异步。
在map()内
在map()
内返回的是一个Promise
对象的数组[Promise, Promise, Promise]
, 但是await
只能处理一个Promise
对象,所以可以通过Promise.all
方法来执行