使用功能(回调)

时间:2018-07-21 22:44:52

标签: javascript mongodb asynchronous mongoose callback

我是猫鼬的新手,我试图了解传递“回调”时到底发生了什么。我知道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
}

1 个答案:

答案 0 :(得分:0)

调用callback意味着您已完成该特定操作。

async.parallel等到调用所有回调之后,再调用最后一个函数,并将结果传递给该函数,该函数从之前每个操作中的回调中获取。

因此,在您的情况下,async同时调用您的两个操作。当猫鼬通过req.body.authorid查找作者而发现错误或引发错误时,将调用回调,与authors_books相同。为了确定何时完成所有并行函数,已使用errresults参数调用了最后一个函数。您可以检查errresults来了解操作如何完成。

注意:您将在最后一个函数的results参数中获得运算结果。例如,您将从 author 的第一个操作中获得results.author,并且从第二个操作中获得 results.authors_books