问题标签 [node-async]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8909 浏览

javascript - 在 node.js 中使用异步瀑布时的“err”参数

我正在尝试执行一系列函数,每个函数都将回调传递给下一个。现在它看起来像这样(请原谅任何小错误,我正在重写它!):

我的第一个问题是我不确定如何优雅地启动此功能,因为它无法接受输入。我最终将把它包装在一个本地函数中,但这仍然让我有点不安。

其次,虽然这行得通,但我不知道“错误”论点是如何影响这一点的。如果我尝试将它插入到参数列表中,它会以各种方式中断。我希望能够单独捕获任何函数中的错误 - 或者是否需要这样做,因为我在传递的最后一个回调中有错误?

0 投票
4 回答
33407 浏览

javascript - async.waterfall 和 async.series 有什么区别

nodejs 异步模块:https ://github.com/caolan/async提供了 2 个类似的方法,async.waterfallasync.series.

它们之间有什么区别?

0 投票
2 回答
6942 浏览

javascript - 读取所有文件后,使用异步模块触发回调

我正在使用caolan 的“异步”模块来打开文件名数组(在本例中为模板文件名)。

根据文档,我正在使用async.forEach(),因此一旦所有操作完成,我就可以触发回调。

一个简单的测试用例是:

输出如下:

即,似乎最终的回调没有触发。我需要做什么才能使最终的回调触发?

0 投票
3 回答
2991 浏览

node.js - 无法在异步模块中使用“地图”功能

我正在使用 node.js“异步”模块,需要使用“地图”方法。
基本上我有一个包含其他数组的数组。内部数组包含 2 个元素,一个类型和一个图像文件名。

对于每个内部数组,我想获取由文件名标识的图像的 base64 编码,并将此编码字符串添加为数组的第三个元素。

我正在做这样的事情:

我知道 arr.push(base64Image) 的东西是不正确的,但我不知道如何返回修改后的元素。

在 map(arr, iterator, callback) 文档中,它被指定:

“迭代器使用数组中的项目和完成处理时的回调来调用。”

问题是我无法弄清楚如何用新数组提供回调。

0 投票
1 回答
5442 浏览

javascript - 使用 node.js async forEachSeries 时是否有“继续”的等效语句?

我正在使用 node.js 异步包,特别是 forEachSeries,根据从数组中提取的参数发出一系列 http 请求。在每个请求的回调中,我都有一些 if/else 语句来响应不同类型的响应。

如果在上面,我可以在 else 中使用与“继续”等效的方法吗?这在技术上不在循环内部,因此 continue 不起作用。

0 投票
2 回答
75349 浏览

node.js - Node.js - 使用异步库 - 带有对象的 async.foreach

我正在使用节点异步库 - https://github.com/caolan/async#forEach并希望遍历一个对象并打印出它的索引键。完成后,我想执行一个回调。

这是我到目前为止所拥有的,但'iterating done'从未见过:

  1. 为什么最终函数没有被调用?

  2. 如何打印对象索引键?

0 投票
1 回答
9828 浏览

node.js - node.js async.series 不工作

这段代码直接取自以下示例:https ://github.com/caolan/async#seriestasks-callback

但是它不起作用。它在打印“a”后停止。

是最新版本的异步模块的错误还是我的使用有问题?

0 投票
1 回答
449 浏览

javascript - 如何从 Node.js 中的异步循环返回

当使用异步库进行流控制时,特别是 async.forEach 在需要跳过特定项目时如何正确执行回调。

例子:

如果我不使用process.nextTick(callback),如果 bigCollection 太大,我是否会面临堆栈溢出的风险?如果我确实使用了process.nextTick(callback)我会破坏我的代码吗?

我已经养成了这样做的习惯process.nextTick(callback),但是我不确定这样做是否是一个好习惯。

0 投票
1 回答
2493 浏览

node.js - 使用 async.waterfall 减少嵌套,但增加了混乱

我试图通过使用来减少异步调用(node + socket.io)的嵌套,但async.waterfall我最终不得不将参数附加到瀑布下方,因为稍后需要它们。此代码可能会更好地解释:

// 原始版本:

// async.js 版本

目标是可读性,但我发现多余的参数传递会增加混乱。我知道我可以在调用 async.waterfall 之前声明变量并根据需要存储参数以供以后在链中使用,但这对可读性没有帮助。

有没有办法让它更优雅?

0 投票
3 回答
2101 浏览

node.js - Async.js 并行回调未执行

我正在使用Async.js 中的并行函数,由于某种原因,最终的回调没有被执行,我没有看到任何地方发生错误。

我正在动态创建一个传递给并行调用的函数数组,如下所示:

然后在一个外部函数中(在上面执行 forEach 的函数之外)我有 generateFileFunc() 函数。

我看过这篇 SO 帖子,它帮助我到达了我所在的位置。但是最终的回调没有被执行。并行调用中的所有项目都在执行。在最底部的 gnerateFile (function) 内部,我调用了回调,所以这是金色的。

任何人都知道为什么这可能无法正常执行?

最终结果是并行处理每个函数调用,然后在我完成时收到通知,以便我可以继续执行其他一些指令。

谢谢!