问题标签 [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.
node.js - async.parallel 是否也并行化阻塞代码?
我试图了解async
包与代码并行化相关的行为。据我了解,结构化代码以避免回调地狱/汤是有帮助的,但这是唯一的优势吗?
在上面的代码中,所有三个 api 调用都将在不等待另一个完成的情况下进行。根据规格。最后的回调将在最长的 API 调用返回后被调用,因为其余的会在之前完成。
但是,如果我更改代码以使其进行几个阻塞操作,会发生什么?:
从表面上看“Node.js 是单线程的” ,我们认为该async
块将在 15 秒后执行其最终回调,但是知道“Node.js 维护自己的内部线程池”,我们可以假设Node 会在自己的线程中运行每个回调,真正并行化函数,并在 5 秒后调用最终回调?
node.js - 将 async 与异步函数一起使用
我知道这听起来很愚蠢,但我不明白如何使用async
来处理现有的异步函数。
例如,考虑foo(arg1, arg2, ..., argN, callback)
在某个节点模块中定义的一些异步函数。假设我想在async
'swaterfall(tasks,[callback])
函数中使用它。我怎么可能这样做?
但我不能这样做,因为callback
需要在函数结束之前调用。帮助?
node.js - node-async 是否处理常见的“并行获取”工作流程?
我经常发现自己编写函数来处理一系列项目:
- 一个异步函数并行运行多次,每个函数使用数组的不同项作为其参数
- 所有功能完成后触发的计数器
例如:
我经常将Caolan 的异步库用于其他工作流样式的任务,但我似乎找不到与此工作流对应的东西。例如,async.parallel 是关于并行运行许多不同的函数,而我想要的是使用不同的参数运行相同的函数:
async 是否提供类似的东西?
node.js - Nodejs async:如何将键映射到键值?
我找不到以下 async.js 库的方法:
我有:
- 键数组
['a', 'b', 'c']
- 迭代器如:
如果我使用async.map([1, 5], it, cb)
,我会得到[2, 10]
。
{ 1: 2, 5: 10 }
在这种情况下我该怎么办?
node.js - 使用流作为 Node.js 中异步队列的输入,如何确保仅调用一次 queue.drain
我将从流中读取一系列输入,并对每个输入执行 HTTP GET 请求。为了避免一次创建太多连接,我使用async.queue将这些输入排队。
在读取所有输入(end
发送到流)之后,我想收集以前的结果并生成一个概述。
我目前正在queue.drain
为此目的使用。但queue.drain
在我的情况下可能会被多次调用,因为进程可能会在输入时被阻塞,并且当这种情况发生时队列将为空。
那么,异步库中是否有任何东西可以确保queue.drain
在处理流时只调用一次?只要可以实现此功能,我不介意切换到另一个控制流。
javascript - Node.JS async.parallel 不会等到所有任务都完成
我正在使用aync.parallel并行运行两个函数。这些函数请求 RSS 提要。然后解析 RSS 提要并将其添加到我的网页中。
但是由于某种原因async.parallel
,没有等到两个函数完成就运行回调方法
任务完成后,结果将作为数组传递给最终回调。
我的代码。
事实上,我只有“完成!” 在我的网页上。为什么?
为什么我需要打电话res.end()
?
Node.JS文档说:
必须在每个响应上调用方法 response.end()。
如果我不调用它,我的网页将被“下载”(我的意思是浏览器地址行中的进度条)。
javascript - express js中的async.waterfall方法
问题:
我正在使用 express.js 从数据库中获取数据并以 json 格式显示。
但是当在节点 js 中运行代码时,会显示一个空数组(ganttresult),当我再次刷新浏览器时,我得到了所需的结果。
所以,我已经使用async.waterfall
方法来顺序执行我的代码,但同样的问题仍然存在。
请指教
javascript - 如何将 async.waterfall 与现有的回调一起使用
我有一组命令对象。我需要调用 do 命令,这是一个异步调用,按顺序对每个数组元素进行。如果有任何失败,我需要停止处理。
我知道如何为个人异步调用执行 async.waterfall 调用,但我不知道如何将异步调用数组传递给 async.waterfall。
从语法上不确定如何设置它。
这是命令对象,读取函数是我需要以瀑布方式执行的异步调用...
javascript - node.js如何在从流导入数据库后同步最终回调
这听起来像是Q
or之类的库的一个非常典型的用例async
,但我真的不知道什么是最好的方法。
我想导入一个 150 行的 CSV 文件(使用node-csv
),并为每一行创建一个 mongo 文档。但是,流解析似乎比 'db inserts' 完成得更快,所以我遇到了回调被调用得太早的问题。
那么,请任何人给我一个提示,我可以如何使用 async/promises 来解决这个问题,以便当流解析/数据库插入是异步的时,最终回调将仅在所有插入完成后完成?