【发布时间】:2014-11-27 22:44:16
【问题描述】:
抱歉,我无法提出一个直截了当的问题/标题,但这就是问题所在。我有以下构造:
var userProvider=function(login){
this.getUser=mongoose.find(login).exec();
}
userProvider.prototype.doStuffWithUserData=function(){
this.getUser.then(function(user){
...
});
}
userProvider.prototype.doOtherStuffWithUserData=function(){
this.getUser.then(function(user){
...
});
}
有没有更好的方法,这样我就不需要在每个原型函数中调用承诺,尽管原型函数只在数据存在之前被评估?
【问题讨论】:
-
如果你重复它,你可以将它提取到一个装饰器中。
-
Is it bad practice to have a constructor function return a Promise? 的可能重复项 - 如果这有助于解决您的问题,我很乐意作为一个骗子关闭,否则我可以使用 Benjamin 提到的装饰器技术发布答案。
-
我会选择不好的做法,谢谢:)
-
@Bergi 他的构造函数没有返回一个承诺。
-
@BenjaminGruenbaum:你是对的,但它似乎是相同的设置 - 方法依赖于在构造函数中完成的异步副作用。当然,我们不知道
doStuff和doOtherStuff到底是什么,但它们最好不要尝试操作实例或调用其他方法;否则这个类会变得一团糟。
标签: javascript node.js mongoose promise