async.parallel 中的回调如何工作(它来自哪里?)

aka*_*ord 3 javascript asynchronous callback asynccallback

我在文档中找到了这个例子。我了解主要回调(函数(err,结果)...)的工作原理,但是传递给一个和两个函数的“回调”参数是什么?这些人来自哪里,他们做什么?

async.parallel({
    one: function(callback){
        setTimeout(function(){
            callback(null, 1);
        }, 200);
    },
    two: function(callback){
        setTimeout(function(){
            callback(null, 2);
        }, 100);
    }
},
function(err, results) {
    // results is now equals to: {one: 1, two: 2}
});
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 5

callback参数由异步基础设施传递给您的函数。它指向 async 内部的一个函数(尽管这不是您需要知道的)。异步基础设施将其传递给您并要求您在正确的时间调用它。

这是您与异步库通信的方式,告诉它​​您的异步函数已完成其工作以及它是否成功完成或有错误。当您的函数完成其工作时,您调用该函数并通知异步库该过程的这一步现已完成(错误或成功)。


仅供参考,如果您熟悉 Node.js 中的 Express 中间件,它与next传递给中间件的参数非常相似。当您的中间件被调用时,传递给它的参数之一是next回调。你的中间件完成它的工作(可能是异步的),然后当它完成时,它通过调用传递next()给它的回调告诉 Express 基础设施它已经完成。

这是来自 Express 的一个有点相似的例子:

app.use(function (req, res, next) {
  doSomethingAsync(function() {
       next();
  })
});
Run Code Online (Sandbox Code Playgroud)