我希望能够使用" async模块"在每个函数内执行异步运行中的两个任务。
例如:
async.each(openFiles, function( file, callback) {
// task 1
function(){
callback();
}
function(){
callback(); // task 2, waits for task 1 to finish
}
}, function(err){
console.log("done");
});
我使用每个因为我循环遍历每个值,需要对每个元素应用两个问题。
答案 0 :(得分:4)
您应该可以在async.series
内运行async.each
。这将迭代openfiles
并在里面运行系列,然后只有在系列完成时才会进行每个循环。
async.each(openFiles, function(file, eachCallback) {
async.series([
function(seriesCallback) {
seriesCallback();
},
function(seriesCallback) {
seriesCallback();
}
], function() {
eachCallback();
})
}, function(err) {
console.log("done");
});
答案 1 :(得分:0)
以下是2-async方法的一些代码:
async.each(openFiles, function( file, callback) {
async.each([task1, task2], function(task, cb) {
task(file); // exec tasks 1, 2
cb(); // one completed
}, callback); // both completed
}, function(err){
console.log("done");
});
答案 2 :(得分:0)
您可以在此处使用javascript回调来在task2上创建task1的依赖关系。像这样:
async.each(openFiles, function( file, callback) {
// task 1
function task1(function(){
function task2 (function(){
//callback of async
callback();
});
});
}, function(err){
console.log("done");
});
并且您的任务1和任务2函数将回调作为参数,如下所示:
function task1(callback){
//do whatever in task1
callback();
}
function task2(callback){
//do whatever in task1
callback();
}
这样,task2只在task1在async.each
中完成时才会运行