为什么我不能通过mongoose promise resolve作为另一个promise onResolve的处理程序

时间:2014-01-24 17:37:24

标签: javascript mongoose promise

使用Mongoose和mpromise,我得到一些奇怪的回调行为。查看Promise.prototype.onResolve的mpromise代码,我不明白为什么函数没有正确应用。

var prom = new mongoose.Promise();
anotherPromise.onResolve(prom.resolve);

另一个促销的onResolve似乎永远不会解决,除非我把它扔进一个匿名函数。

var prom = new mongoose.Promise();
anotherPromise.onResolve(function(err, doc) { prom.resolve(err, doc); });

我在这里误解了什么?

1 个答案:

答案 0 :(得分:0)

this context很重要。您没有传递该特定resolve的{​​{1}}方法,而是未通过任何承诺的通用方法,并且在没有(或错误)上下文的情况下调用时将无效。

在您的匿名函数中,您明确调用 on prom对象上的方法。您也可以使用bind

prom