gpt4 book ai didi

node.js - 找出一系列回调(从循环触发)何时全部执行的正确方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 22:02:59 25 4
gpt4 key购买 nike

我是 Node.js 新手,很好奇在进程上(重复)运行循环的规定方法是什么,在执行结束时将发生下一步,但仅在所有迭代之后' 回调已触发。

具体来说,我正在进行 SQL 调用,并且需要在进行大量插入和更新后关闭 sql 连接,但由于它们都是异步的,所以我无法知道它们何时全部完成,这样我就可以在 session 上调用 end() 。

显然,这是一个远远超出这个特定示例的问题,因此,我不是在寻找有关 sql 的具体解决方案,而是在寻找一般实践,到目前为止,我对此感到有点困惑。

我现在所做的实际上是为循环对象的长度设置一个全局计数器,并在每个回调中从它递减,以查看它何时达到零,但这感觉真的很笨拙,我希望有更多优雅(并且以 Javascript 为中心)的方式来实现这种监控。

TIA

最佳答案

有很多可用的流程控制库可以应用模式来帮助解决此类问题。我最喜欢的是async 。例如,如果您想按顺序运行一堆 SQL 查询,您可以使用 series :

async.series([
function(cb) { sql.exec("SOME SQL", cb) },
function(cb) { sql.exec("SOME MORE SQL", cb) },
function(cb) { sql.exec("SOME OTHER SQL", cb) }
], function(err, results) {
// Here, one of two things are true:
// (1) one of the async functions passed in an error to its callback
// so async immediately calls this callback with a non-null "err" value
// (2) all of the async code is done, and "results" is
// an array of each of the results passed to the callbacks
});

关于node.js - 找出一系列回调(从循环触发)何时全部执行的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149365/

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