Javascript async库中的async.map和bluebird中的Promise.map有什么区别?
我解释说: 我想做的是将async/await与那些库async或bluebird中的一个一起使用 我不明白为什么这样效果很好:Javascript async库中的async.map和bluebird中的Promise.map有什么区别?,javascript,node.js,async-await,bluebird,async.js,Javascript,Node.js,Async Await,Bluebird,Async.js,我解释说: 我想做的是将async/await与那些库async或bluebird中的一个一起使用 我不明白为什么这样效果很好: const promises = Promise.map (someArray, async item => { const result = await getSomething(item); return {...item, ...result} }); const promisesResults =
const promises = Promise.map (someArray, async item => {
const result = await getSomething(item);
return {...item, ...result}
});
const promisesResults = await Promise.all(promises);
但async.map的情况也不一样。它返回未定义的我
谢谢大家 async是一个遗留库,在promise模式传播和本机promise出现之前,它解决了与promise相同的问题。异步库基于回调,不知道承诺和异步函数,它们是ES6承诺的语法糖
此代码段之所以有效,是因为Promise.all需要一个承诺数组:
Promise.all(promises);
承诺数组提供了带有异步函数回调的数组映射:
someArray.map(async item => { ... })
这不适用于异步库,因为它应该适用于基于回调的迭代对象函数,并且不知道异步函数返回的承诺
由于ES6 promises缺少async库中的一些高级功能,因此可以使用Bluebird API或。对其进行增强,但async.map没有它不可能是相同的,因为它是不同的库。您到底要尝试什么代码?const promises=async.map someArray,async item=>{const result=wait getSomethingitem;return{…item,…interview};我理解!所以,如果我想使用async/await和Promise.all,那么最好使用bluebird库,对吗?是的,当您使用promises时,您不需要异步库。如果你答应的话,你可能也不需要蓝知更鸟。一切都是你所需要的。您最初发布的someArray.map代码仅适用于ES6承诺。你可以看看promise ponyfills,它提供了蓝鸟不依赖于整个蓝鸟库的大多数东西。我在我的项目中使用了很多promise.all,我阅读这些内容是为了避免每次我可以轻松使用蓝鸟的“promise.map”时创建一系列承诺。我要去看小马。告诉我表演怎么样?async还是bluebird?如果您不需要临时变量,可以跳过它,它就像Promise.allsomeArray.mapasync item=>。纯蓝鸟承诺链比纯本机承诺链更快,但由于异步以任何方式使用本机承诺,大多数性能改进都被放弃。我要说的是,这里的表现并不是选择蓝鸟的理由。至于异步库,我并没有测量,但承诺足够快,不必担心过早优化。