异步并行 - 它是如何工作的?

时间:2013-08-06 02:10:29

标签: async.js

我想我可能对async.js的工作原理没有正确的认识。在以下示例中,不执行回调函数,我不确定原因。

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 个答案:

答案 0 :(得分:1)

异步期望异步控制流来自它的参数,e.i函数通过调用提供的回调函数传递有关完成的信号。

async.parallel从输入列表中顺序调用每个函数,然后在n个输入函数正确完成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