mpromise/Monk 承诺永远不会解决
mpromise/Monk promise never resolves
我似乎无法弄清楚为什么当我向它传递一个函数时我的承诺永远不会解决。我有一个像这样的 class 方法:
test(){
return this.dbCollection.insert(...);
}
这是通过 Monk 将一些数据插入到 MongoDB 集合中。它 returns 一个承诺。我像这样从另一个 class 调用此方法:
var testClass = new TestClass();
testClass.test().onResolve(...);
这就是我遇到麻烦的地方。如果我这样做:
testClass.test().onResolve(console.log('Resolved!'));
承诺已解决,我在控制台中看到 "Resolved!",一切都按预期进行。如果我使用 MongoDB 控制台进行检查,我可以看到数据确实已插入。但是,如果我这样做:
testClass.test().onResolve(function(err, data){
console.log('Resolved!');
});
承诺永远不会解决,控制台不会打印任何内容,但数据仍会插入。有没有人见过这种行为?我认为这是 mpromise 的问题,所以我标记了 Mongoose,因为它使用相同的包来实现承诺。
感谢@Bergi 的帮助。就像你建议的那样,承诺实际上并没有解决。结果证明是 mpromise 的 all()
方法有问题(即显然我不完全理解它是如何工作的)。 test()
使用 all()
返回承诺的聚合,这就是没有解决的问题。当将其排除在外时,一切都按预期进行。现在弄清楚 all()
...
发生了什么
我似乎无法弄清楚为什么当我向它传递一个函数时我的承诺永远不会解决。我有一个像这样的 class 方法:
test(){
return this.dbCollection.insert(...);
}
这是通过 Monk 将一些数据插入到 MongoDB 集合中。它 returns 一个承诺。我像这样从另一个 class 调用此方法:
var testClass = new TestClass();
testClass.test().onResolve(...);
这就是我遇到麻烦的地方。如果我这样做:
testClass.test().onResolve(console.log('Resolved!'));
承诺已解决,我在控制台中看到 "Resolved!",一切都按预期进行。如果我使用 MongoDB 控制台进行检查,我可以看到数据确实已插入。但是,如果我这样做:
testClass.test().onResolve(function(err, data){
console.log('Resolved!');
});
承诺永远不会解决,控制台不会打印任何内容,但数据仍会插入。有没有人见过这种行为?我认为这是 mpromise 的问题,所以我标记了 Mongoose,因为它使用相同的包来实现承诺。
感谢@Bergi 的帮助。就像你建议的那样,承诺实际上并没有解决。结果证明是 mpromise 的 all()
方法有问题(即显然我不完全理解它是如何工作的)。 test()
使用 all()
返回承诺的聚合,这就是没有解决的问题。当将其排除在外时,一切都按预期进行。现在弄清楚 all()
...