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方法来执行