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 に答える