gpt4 book ai didi

javascript - async.map 或 async.each 与 async.parallel 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 23:21:29 26 4
gpt4 key购买 nike

我最近开始做一个 Node 项目,并且一直在使用 async 库。我有点困惑哪个选项会更快。在某些数据上使用 async.map 并获取其结果,或使用 async.each 迭代一组用户并将他们的相应操作放入一个函数调用数组中,我使用 async.parallel 执行。

最佳答案

类似于 JavaScript 的 forEach , async.each 接受三个参数,第一个是要迭代的数组,第二个是应用于数组每个元素的函数(即第一个参数)。第二个参数的形式是iterator(item, callback),其中iterator是函数名,callback也是一个函数,使用 callback(err) 形式,在 iterator 完成后调用。 (注意:“如果没有发生错误,回调应该在没有参数或显式空参数的情况下运行。”)async.each的第三个参数是回调它在所有 iterator 函数执行后被调用,就像每个迭代器的回调都有 callback(err) 的形式。

Source


为简洁起见,以下是 async.map 的参数形式:

  • arr - 要迭代的数组。
  • iterator(item, callback) - 应用于 arr 中每个项目的函数。迭代器被传递一个 callback(err,transformed) 必须被调用一次它已完成,但出现错误(可以是 null)和转换后的项目。
  • callback(err, results) - 当所有 iterator 时调用的回调功能已完成,或发生错误。结果是一个数组arr 中的转换项目。

Source


得到问题答案的核心,async.map maps 通过调用 将其第一个参数传递给数组iterator 在数组的每个元素上,这是它的第一个参数,但 async.map 必须返回一个数组,而 async.each 则不然。这体现在async.map的第三个参数中的第二个(我指的是results),它必须是一个数组。也就是说,在最简单的例子中,

async.map([1, 2, 3], function iterator(item, callback_it){ return 2*item; }, callback(err, results))

假设你已经实现了 callback_itcallback,那么在上面的例子中 [2, 4, 6] 将作为 callback 的第二个参数传递

关于javascript - async.map 或 async.each 与 async.parallel 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227494/

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