首页 > 解决方案 > 函数的使用(回调)

问题描述

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

标签: javascriptmongodbasynchronousmongoosecallback

解决方案


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

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

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

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


推荐阅读