2
var async = require('async');

function f1() {
    setTimeout(function(){ console.log('111');},300);
}

function f2() {
    setTimeout(function(){ console.log('222');},100);
}

async.series([f1,f2], function(err, result){
    console.log(result);
});

它打印:

111

没有222?为什么?

4

1 回答 1

5

f1()并且f2()预计将异步完成,因此当它们“完成”时,它们会得到一个回调来调用。试试这个:

var async = require('async');

function f1(done) {
    setTimeout(function(){ console.log('111'); done(); },300);
}

function f2(done) {
    setTimeout(function(){ console.log('222'); done(); },100);
}

async.series([f1,f2], function(err, result){
    console.log(result);
});

编辑:关于“为什么”,这是因为f1()立即被调用,因此您的初始设置setTimeout()按预期安排。但是,由于您永远不会告诉asyncf1()完成,因此它永远不会调用f2().

于 2012-05-11T15:21:29.230 回答