问题标签 [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 投票
1 回答
467 浏览

node.js - async.parallel 是否也并行化阻塞代码?

我试图了解async包与代码并行化相关的行为。据我了解,结构化代码以避免回调地狱/汤是有帮助的,但这是唯一的优势吗?

在上面的代码中,所有三个 api 调用都将在不等待另一个完成的情况下进行。根据规格。最后的回调将在最长的 API 调用返回后被调用,因为其余的会在之前完成。

但是,如果我更改代码以使其进行几个阻塞操作,会发生什么?:

从表面上看“Node.js 是单线程的” ,我们认为该async块将在 15 秒后执行其最终回调,但是知道“Node.js 维护自己的内部线程池”,我们可以假设Node 会在自己的线程中运行每个回调,真正并行化函数,并在 5 秒后调用最终回调?

0 投票
1 回答
137 浏览

node.js - 将 async 与异步函数一起使用

我知道这听起来很愚蠢,但我不明白如何使用async来处理现有的异步函数。

例如,考虑foo(arg1, arg2, ..., argN, callback)在某个节点模块中定义的一些异步函数。假设我想在async'swaterfall(tasks,[callback])函数中使用它。我怎么可能这样做?

但我不能这样做,因为callback需要在函数结束之前调用。帮助?

0 投票
1 回答
137 浏览

node.js - node-async 是否处理常见的“并行获取”工作流程?

我经常发现自己编写函数来处理一系列项目:

  • 一个异步函数并行运行多次,每个函数使用数组的不同项作为其参数
  • 所有功能完成后触发的计数器

例如:

我经常将Caolan 的异步库用于其他工作流样式的任务,但我似乎找不到与此工作流对应的东西。例如,async.parallel 是关于并行运行许多不同的函数,而我想要的是使用不同的参数运行相同的函数:

async 是否提供类似的东西?

0 投票
3 回答
2996 浏览

node.js - Nodejs async:如何将键映射到键值?

我找不到以下 async.js 库的方法:

我有:

  • 键数组['a', 'b', 'c']
  • 迭代器如:

如果我使用async.map([1, 5], it, cb),我会得到[2, 10]

{ 1: 2, 5: 10 }在这种情况下我该怎么办?

0 投票
1 回答
1270 浏览

node.js - 使用流作为 Node.js 中异步队列的输入,如何确保仅调用一次 queue.drain

我将从流中读取一系列输入,并对每个输入执行 HTTP GET 请求。为了避免一次创建太多连接,我使用async.queue将这些输入排队。

在读取所有输入(end发送到流)之后,我想收集以前的结果并生成一个概述。

我目前正在queue.drain为此目的使用。但queue.drain在我的情况下可能会被多次调用,因为进程可能会在输入时被阻塞,并且当这种情况发生时队列将为空。

那么,异步库中是否有任何东西可以确保queue.drain在处理流时只调用一次?只要可以实现此功能,我不介意切换到另一个控制流。

0 投票
2 回答
4049 浏览

javascript - Node.JS async.parallel 不会等到所有任务都完成

我正在使用aync.parallel并行运行两个函数。这些函数请求 RSS 提要。然后解析 RSS 提要并将其添加到我的网页中。

但是由于某种原因async.parallel,没有等到两个函数完成就运行回调方法

文档说:

任务完成后,结果将作为数组传递给最终回调。

我的代码。

事实上,我只有“完成!” 在我的网页上。为什么?

为什么我需要打电话res.end()

Node.JS文档说:

必须在每个响应上调用方法 response.end()。

如果我不调用它,我的网页将被“下载”(我的意思是浏览器地址行中的进度条)。

0 投票
1 回答
791 浏览

javascript - express js中的async.waterfall方法

问题:

我正在使用 express.js 从数据库中获取数据并以 json 格式显示。

但是当在节点 js 中运行代码时,会显示一个空数组(ganttresult),当我再次刷新浏览器时,我得到了所需的结果。

所以,我已经使用async.waterfall方法来顺序执行我的代码,但同样的问题仍然存在。

请指教

0 投票
1 回答
1921 浏览

javascript - 如何将 async.waterfall 与现有的回调一起使用

我有一组命令对象。我需要调用 do 命令,这是一个异步调用,按顺序对每个数组元素进行。如果有任何失败,我需要停止处理。

我知道如何为个人异步调用执行 async.waterfall 调用,但我不知道如何将异步调用数组传递给 async.waterfall。

从语法上不确定如何设置它。

这是命令对象,读取函数是我需要以瀑布方式执行的异步调用...

0 投票
1 回答
543 浏览

javascript - node.js如何在从流导入数据库后同步最终回调

这听起来像是Qor之类的库的一个非常典型的用例async,但我真的不知道什么是最好的方法。

我想导入一个 150 行的 CSV 文件(使用node-csv),并为每一行创建一个 mongo 文档。但是,流解析似乎比 'db inserts' 完成得更快,所以我遇到了回调被调用得太早的问题。

那么,请任何人给我一个提示,我可以如何使用 async/promises 来解决这个问题,以便当流解析/数据库插入是异步的时,最终回调将仅在所有插入完成后完成?

0 投票
1 回答
7530 浏览

node.js - nodejs 中的异步和 Q 承诺

我在 nodejs 中使用Q库和异步库。

这是我的代码示例:

saveItem是一个承诺。当我运行它时,我总是得到cb is undefined,我想then()没有访问权限。任何想法如何解决这个问题?