async库中的async.map与bluebird的Promise.map有什么区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了async库中的async.map与bluebird的Promise.map有什么区别?相关的知识,希望对你有一定的参考价值。
我自己解释一下:
我想要做的是使用async / await与其中一个库(async或bluebird)。
我不明白为什么这样做很好:
const promises = Promise.map (someArray, async item => {
const result = await getSomething(item);
return {...item, ...result}
});
const promisesResults = await Promise.all(promises);
但与async.map相同的却没有。它让我回到undefined
。
感谢大家!
答案
async
是遗留库,它在承诺模式的传播和本地承诺的出现之前解决了与承诺相同的问题。 async
库是基于回调的,不知道承诺和async
函数,它们是ES6承诺的语法糖。
该片段有效,因为Promise.all
需要一系列承诺:
Promise.all(promises);
并且使用map
函数回调数组async
提供了一系列promise。
someArray.map(async item => { ... })
这不适用于async
库,因为它应该与基于回调的iteratee函数一起工作,并且不知道async
函数返回的promise。
由于ES6承诺缺少async
库的一些高级功能,因此可以使用Bluebird API或promise ponyfills进行扩充。
以上是关于async库中的async.map与bluebird的Promise.map有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章
async.map 或 async.each 与 async.parallel 有啥区别?