我自己解释:
我想做的是对其中一个库(异步或蓝鸟)使用async / await。
我不明白为什么这样行得通:
const promises = Promise.map (someArray, async item => {
const result = await getSomething(item);
return {...item, ...result}
});
const promisesResults = await Promise.all(promises);
但是与async.map相同。它返回了我undefined
。
谢谢大家!
答案 0 :(得分:1)
async
是一个传统库,在传播承诺模式和出现本地承诺之前解决了与承诺相同的问题。 async
库是基于回调的,并且没有意识到诺言和async
功能,它们是ES6诺言的语法糖。
该片段之所以起作用,是因为Promise.all
需要一系列承诺:
Promise.all(promises);
并且数组map
和async
函数回调提供了一个promise数组:
someArray.map(async item => { ... })
这不适用于async
库,因为它应该与基于回调的iteratee函数一起使用,并且没有意识到async
函数返回的承诺。
由于ES6 Promise缺少async
库中的某些高级功能,因此可以使用Bluebird API或promise ponyfills进行扩充。