[英]Using Future to return after a series of async calls
我正在编写一个JavaScript(node.js)函数,该函数(异步)进行多个exec()调用,并且在所有这些操作完成后,我需要使用Future返回。
我所拥有的是:
run: function(command, callback) {
for (var i = 0; i < testCases.length; i++) {
var child = exec(command, options, function(error, stdout, stderr) {
// calculate `answer`
if (answer == "wrong") callback(answer);
});
}
},
因此,如果answer
是“错误的”,那么我可以轻松地调用回调,仅此而已。 但是,如果不是所有的答案都是“错误的”(换句话说,如果所有的exec
都具有answer=="correct"
),那么我不知道如何返回这样的值。
我知道我可以为此使用Future
(来自npm
)。 但是,在这种情况下(我不仅只有1个异步调用,而没有多个异步调用),我真的看不到如何使用它。
尝试异步库
async.times(testCases.length, function(n, next){
var child = exec(command, options, function(error, stdout, stderr) {
// calculate `answer`
var data = {answer : answer};
if (answer == "wrong") {
next({err: answer}, data);
}
else {
next(null, data);
}
});
}, callback(err, data) {
// you can also check for err
// we now have an array of data[testCases.length]
});
一种方法是检查已完成的命令数量-
var totalCompleted = 0;
var done = false;
for (var i = 0; i < testCases.length; i++) {
var child = exec(command, options, function(error, stdout, stderr) {
// calculate `answer`
totalCompleted++;
if (answer == "wrong" && !done) {
done = true;
return callback(answer);
}
if(totalCompleted === testCases.length && !done) {
callback('right');
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.