gpt4 book ai didi

javascript - 异步库中的 async.map 和 bluebird 中的 Promise.map 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 00:04:02 25 4
gpt4 key购买 nike

我解释一下自己:

我想做的是将 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 相同则不然。它返回给我未定义

谢谢大家!

最佳答案

async 是遗留库,它在 Promise 模式传播和原生 Promise 出现之前解决了与 Promise 相同的问题。 async library 基于回调,不知道 Promise 和 async functions,它们是 ES6 Promise 的语法糖.

该代码片段之所以有效,是因为 Promise.all 需要一个 Promise 数组:

Promise.all(promises);

并通过数组 mapasync 函数回调提供了一个 promise 数组:

someArray.map(async item => { ... })

这不适用于 async 库,因为它应该与基于回调的 iteratee 函数一起使用,并且不知道 async 函数返回的 promise 。

由于 ES6 Promise 缺乏 async 库中的一些高级功能,因此可以使用 Bluebird API 或 promise ponyfills 来增强它们。 .

关于javascript - 异步库中的 async.map 和 bluebird 中的 Promise.map 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55044185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com