我是猫鼬的新手,我试图了解传递“回调”时到底发生了什么。我知道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
}
答案 0 :(得分:0)
调用callback
意味着您已完成该特定操作。
async.parallel
等到调用所有回调之后,再调用最后一个函数,并将结果传递给该函数,该函数从之前每个操作中的回调中获取。
因此,在您的情况下,async
同时调用您的两个操作。当猫鼬通过req.body.authorid
查找作者而发现错误或引发错误时,将调用回调,与authors_books
相同。为了确定何时完成所有并行函数,已使用err
和results
参数调用了最后一个函数。您可以检查err
和results
来了解操作如何完成。
注意:您将在最后一个函数的results参数中获得运算结果。例如,您将从 author
的第一个操作中获得results.author
,并且从第二个操作中获得 results.authors_books
。>