流行的node.js模块async包括集合和控制流的函数,其中一些版本可以并行或串行操作。
但在其中我找不到构建循环操作循环的方法。
我正在尝试和这个伪代码一样:
forever {
l = getline();
if (l === undefined) {
break;
} else {
doStuff(l);
}
}
getLine()
的所有电话,我可以使用async.whilst
。for
或while
循环那样我可以使用async.eachSeries
。 我可以使用什么来获取控制流中的series
行为而不是集合迭代?
答案 0 :(得分:1)
async.whilst
按照您的需要连续执行其功能,因此您可以执行以下操作:
var l = getline();
async.whilst(
function () { return l !== undefined; },
function (callback) {
doStuff(l);
l = getline();
callback(); // Check function isn't called again until callback is called
},
function (err) {
// All done
}
);
答案 1 :(得分:0)
如果你想像同步代码一样执行循环循环,你应该使用async.series或async.waterfall
系列(任务,[回调])
运行一系列函数,每个函数运行一次 之前的功能已经完成。如果系列中的任何功能通过 它的回调错误,不再运行函数和回调 系列会立即调用错误值。一旦 任务完成后,结果将传递给最终回调 作为一个数组。
瀑布(任务,[回调])
运行一系列函数,每个函数都将结果传递给 数组中的下一个。但是,如果任何函数传递错误 回调,下一个函数没有执行和主 立即调用带有错误的回调。
瀑布链回调将一个输出作为下一个输入传递,系列只是串行执行。