gpt4 book ai didi

node.js - 循环内的异步调用

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

Possible Duplicate:
Coordinating parallel execution in node.js

首先,上手伪代码:

forEach(arrayelements) {
asyncQueryFunction(function(qres) {
//work with query results.
});
}
// finally, AFTER all callbacks did return:
res.render("myview");

怎么做?

如果这还不够清楚,我会解释:

我需要执行一系列“更新”查询(在 mongodb 中,通过 mongoose),循环遍历文档 ID 列表。对于数组中的每个 id,我将调用一个异步函数,该函数将返回查询结果(实际上我不需要对它们做任何事情)。

我知道我必须使用 .forEach() javascript 循环,但是只有在所有异步查询都完成后,我才能执行“最终”回调?

当我要执行“有限”系列任务时,我已经在使用出色的异步库 (https://github.com/caolan/async) 来完成此类任务。但我不认为我可以将一组不同的函数传递给它。

我可以吗?

最佳答案

非常简单的模式是使用“运行任务”计数器:

var numRunningQueries = 0
forEach(arrayelements) {
++numRunningQueries;
asyncQueryFunction(function(qres) {
//work with query results.
--numRunningQueries;
if (numRunningQueries === 0) {
// finally, AFTER all callbacks did return:
res.render("myview");
}
});
}

或者,或者,使用异步助手库,例如 Async.js

关于node.js - 循环内的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12472174/

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