2013-08-12 2 views
1

По какой-то причине строка «yyyyyyyyyy» никогда не печатается, когда я использую async.parallel(), как показано ниже. Почему это? Я думал, что последняя функция будет вызвана после вызова двух других.async.parallel() - последняя функция не называется

var async = require('async'); 
async.parallel([ 
    function() { 
     console.log('xxxxxxxxxxx'); 
    }, 
    function() { 
     console.log('ccccccccccc'); 
    } 
], function(err, results){ 
    console.log('yyyyyyyyy'); 
}); 

ответ

4

Каждый function передается в первом параметре к async.parallel должен принять callback, что она вызывает, когда его сделали так async знает, что он завершил:

var async = require('async'); 
async.parallel([ 
    function(callback) { 
     console.log('xxxxxxxxxxx'); 
     callback(); 
    }, 
    function(callback) { 
     console.log('ccccccccccc'); 
     callback(); 
    } 
], function(err, results){ 
    console.log('yyyyyyyyy'); 
}); 

Если ошибка происходит в одном из functions , он должен позвонить по телефону callback с кодом

callback(err); 

, так что async знает, что произошла ошибка, и он немедленно вызовет последний function.

Смежные вопросы