我似乎无法弄清楚为什么我的承诺在我传递函数时永远无法解决。我有这样的类方法:
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,因为它使用相同的包来承诺。
答案 0 :(得分:0)
感谢@Bergi的帮助。像你建议的那样,承诺并没有真正解决。事实证明这是mpromise的all()
方法的一个问题(即显然我不完全理解它是如何工作的)。 test()
正在使用all()
返回承诺汇总,而这是未解决的问题。当这个被取出时,一切都按预期工作。现在要弄清楚all()
...