传播callback函数来捕获函数

TopicStatistics.methods.createTopicStatistics = function(callback) { // do stuff Topic.find({} , function (err, resultList) { if(err) { // do stuff if(typeof callback === "function") callback(err); // callback undefined } else { // do stuff if(typeof callback === "function") callback(null); // callback undefined } }); }; 

以上是我正在执行的代码。 问题是这样的:

由于mongoose的话题是asynchronous的,所以我的函数在mongoose.find完成它的工作之前完成了,这也是正常的,也是因为这个callbackvariables被清理了,并且变成了未定义的。

我正在寻找的是一种将callback函数传播到mongoose.find函数的方法。 像这样的东西:

 Topic.find({} , function (err, resultList, mycallback); 

这将使我能够在mongoose内部使用它,并能够在mongoose内部的操作结束时调用它。

我想你需要在Topic的范围中定义的另一个callback。

 Topic.find({} , function (err, resultList, callback) { 

您在Topic.find()中使用的“callback”variables引用回到在TopicStatistics.createTopicStatistics()上设置的variables。 所以当你进入

 Topic.find({} , function (err, resultList, mycallback); 

由于JavaScript不检查参数数量,“mycallback”消失。