2013-08-06 2 views
1

Я думаю, что у меня может не быть правильной идеи о том, как работает async.js. В следующем примере функция обратного вызова не выполняется, и я не знаю, почему.Async parallel - как это работает?

async.parallel([ 
    function(){ 
    console.log('one'); 
    },function(){ 
    console.log('two'); 
    } 
], function(err, results) { 
    console.log('done!'); 
}); 

В консоли, у меня есть:

one 
two 

Я сделал ручку для этого кода слишком http://codepen.io/tnguyen14/pen/GaJxl

Я прочитал документацию с сайта асинхронного https://github.com/caolan/async#parallel несколько раз и пытался искать онлайн для примеров того, как это сделать, но я до сих пор не понимаю.

Я был бы признателен, если бы кто-нибудь мог объяснить мне, как работает асинхронный процесс, и что случилось с моим кодом.

ответ

1

Async ожидает, что асинхронный поток управления от его аргументов, e.i вы передаете сигналы о завершении, вызывая предоставленную функцию обратного вызова.

async.parallel последовательно вызывает каждую функцию из списка ввода, а затем вызывает обратный вызов после того, как n входных функций сигнализировали о завершении ровно n раз.

async.parallel([ 
    function(callback){ 
    console.log('one'); 
    $('.thing').html('one'); 
    callback(); // this is the way to tell async.parallel "I'm done". It can happen from different stack frame 
    },function(callback){ 
    console.log('two'); 
    $('.thing').html('one'); 
    setInterval(callback, 1000); // just to make it more async-ly. 
    } 
], function(err, results) { 
    console.log('done!'); 
    $('.result').html('one'); 
}); 

Вилка вашего примера на codepen: http://codepen.io/anon/pen/KBhob

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