Javascript 函数的使用(回调)

Javascript 函数的使用(回调),javascript,mongodb,asynchronous,mongoose,callback,Javascript,Mongodb,Asynchronous,Mongoose,Callback,我是mongoose的新手,我正试图了解在传递“回调”时到底发生了什么。我知道async.parallel正在调用两个返回查询结果的函数,但我不理解在这种情况下“回调”的用法 async.parallel({ author: function(callback) { Author.findById(req.body.authorid).exec(callback) }, authors_books: function(callb

我是mongoose的新手,我正试图了解在传递“回调”时到底发生了什么。我知道async.parallel正在调用两个返回查询结果的函数,但我不理解在这种情况下“回调”的用法

async.parallel({
        author: function(callback) {
          Author.findById(req.body.authorid).exec(callback)
        },
        authors_books: function(callback) {
          Book.find({ 'author': req.body.authorid }).exec(callback)
        },
    }, function(err, results){
// some function
}

调用
callback
表示您已完成该特定操作

async.parallel
等待调用所有回调函数,然后调用最后一个函数,并将之前每个操作中回调函数得到的结果传递给它

因此,在您的情况下,
async
同时调用这两个操作。当mongoose通过
req.body.authorid
查找作者来查找或抛出错误时,调用回调,对于
authors\u books
也是如此。为了确定何时完成所有并行函数,使用
err
results
参数调用了最后一个函数。您可以检查
err
results
以了解操作是如何完成的

注意:您将在最后一个函数的results参数中获得操作结果。例如,您将从
结果中的第一个操作中获得
作者
。作者
以及
结果。作者
来自第二个操作