传播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”消失。