mpromise / Monk承诺永远不会解决

时间:2016-01-28 18:07:29

标签: javascript node.js mongoose promise monk

我似乎无法弄清楚为什么我的承诺在我传递函数时永远无法解决。我有这样的类方法:

test(){
    return this.dbCollection.insert(...);
}

通过Monk将一些数据插入到MongoDB集合中。它返回一个承诺。我从另一个类中调用此方法:

var testClass = new TestClass();
testClass.test().onResolve(...);

这是我遇到麻烦的地方。如果我这样做:

testClass.test().onResolve(console.log('Resolved!'));

承诺解决了,我看到“已解决!”在控制台中,一切都按预期工作。如果我使用MongoDB控制台检查,我可以看到确实插入了数据。但是,如果我这样做:

testClass.test().onResolve(function(err, data){
    console.log('Resolved!');
});

承诺永远不会解决,没有任何内容打印到控制台,但数据仍然插入。有没有人见过这种行为?我认为这是mpromise的一个问题,所以我标记了Mongoose,因为它使用相同的包来承诺。

1 个答案:

答案 0 :(得分:0)

感谢@Bergi的帮助。像你建议的那样,承诺并没有真正解决。事实证明这是mpromise的all()方法的一个问题(即显然我不完全理解它是如何工作的)。 test()正在使用all()返回承诺汇总,而这是未解决的问题。当这个被取出时,一切都按预期工作。现在要弄清楚all() ...

发生了什么