Async.until函数参数

时间:2015-08-18 01:30:13

标签: node.js

async.parallel([
    function(callback) { //This is the first task, and callback is its callback task
        db.save('xxx', 'a', function(err) {
            //Now we have saved to the DB, so let's tell async that this task is done
            callback();
        });
    },
    function(callback) { //This is the second task, and callback is its callback task
        db.save('xxx', 'b', callback); //Since we don't do anything interesting in db.save()'s callback, we might as well just pass in the task callback 
    }
], function(err) { //This is the final callback
    console.log('Both a and b are saved now');
});

嘿,当我尝试理解node.js中的异步时,我发现这个代码在线,而我对上面的代码的问题是在async.parallel中的函数数组中,每个函数中传递的回调参数是什么?该回调参数来自何处以及该变量的目的是什么?如果这是一个愚蠢的问题,我很抱歉,但我无法理解这次回调......

2 个答案:

答案 0 :(得分:2)

callback参数是async创建的函数。当您在每个数组函数中调用它时,它会发出异步信号,表示函数已完成。通过这种方式,您可以控制功能何时完成 - 当您调用回调时。

当从所有数组函数调用回调时,将调用最终函数。

答案 1 :(得分:2)

async.parallel()定义的合同是您传递一系列函数。然后它将调用每个函数并将这些函数传递给一个函数引用的单个参数(我认为它是一个完成回调)。要使async.parallel()正常工作,您在数组中传递的函数必须在异步操作完成时调用该函数引用。当它调用该函数引用时,它可以传递错误参数和结果参数。如果错误参数是真实的,那么它将停止进一步处理并将该错误反馈给调用代码。

异步传递引用的函数是异步库的内部函数,当您调用它时,异步库会执行一些内务处理以跟踪仍在进行的异步操作数量,是否现在都已完成,是否进一步处理应该因错误等而停止......

您基本上可以将其视为异步库完成功能。异步操作完成后,必须调用该完成函数,以便异步库知道您的操作现在已完成。这就是它如何管理和跟踪您的多个异步操作。如果不调用该完成回调,则异步库永远不会知道异步操作何时完成。