gpt4 book ai didi

javascript - 在 Node.js 中,如何使用 node-seq 进行嵌套回调

转载 作者:行者123 更新时间:2023-11-30 12:51:49 25 4
gpt4 key购买 nike

我正在使用 @substack 的 node-seq 模块,但遇到了一些问题。

我想做的是:2 个并行的异步操作,每个都对它们的结果做一些事情,然后一旦两者都完成,它们就会将修改后的结果发送到一个完成操作。

经过一些修改,我得到了这段代码,基本上可以正常工作了:

var Seq = require('seq');


Seq()
.par(function () {
console.log('starting action 1');
var self = this;
someModule.someAsyncMethod(function(result) {
// do some stuff with result
console.log('finishing action 1');
self(result);
});
})
.par(function () {
console.log('starting action 2');
var self = this;
someModule.someAsyncMethod(function(result) {
// do some stuff with result
console.log('finishing action 2');
self(result);
});
})
.seq(function(result1, result2) {
console.log('all actions done');
});
;

问题是,self(result) 正在将结果发送到 console.log。我已经通读了文档,但不明白为什么会这样。

我的问题是:

1) 有没有办法关闭 self(result) 的日志记录行为?

2) 有更好的方法吗?

感谢您的帮助!

最佳答案

我相信你应该做 self(null, result)。典型的回调将错误作为第一个参数,将结果作为第二个参数。

此外,我认为您的最终 .seq 将采用结果数组而不是 result1, result2。查看http://substack.net/seq

尝试:

Seq()
.par(function () {
console.log('starting action 1');
var self = this;
someModule.someAsyncMethod(function(result) {
// do some stuff with result
console.log('finishing action 1');
self(null, result);
});
})
.par(function () {
console.log('starting action 2');
var self = this;
someModule.someAsyncMethod(function(result) {
// do some stuff with result
console.log('finishing action 2');
self(null, result);
});
})
.seq(function(result1, result2) {
console.log('all actions done');
});
;

关于javascript - 在 Node.js 中,如何使用 node-seq 进行嵌套回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20715281/

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