let items = [1, 2, 3];
items = items.map(async (v) => {
await asyncMultiplyByTwo(v);
});
如果直接这样写,会得到一组Promise对象
必须这样写才能获取正确结果:
let items = [1, 2, 3];
items = await Promise.all(
items.map(async (v) => {
await asyncMultiplyByTwo(v);
})
);
我服了,map()函数用async居然这么麻烦,有什么更好的写法,或者库来用?
你说得对,但是
其实第二种写法,map 里面的函数不需要 async/await,反正都是返回
Promise
不过,我推测你原先的写法还有别的问题,就是没有
return
,而asyncMultiplyByTwo
看起来是一个返回入参两倍的异步函数,它的返回值应该是需要的或者
或者
那这么看来不需要箭头函数
这么看来是不是没有那么复杂?
如果你还是不喜欢每次都写
Promise.all
,大可以封装一下(不过不推荐扔到原型链上)用的时候