我是javascript的新手,我需要一些帮助,了解应该如何使用promises(使用bluebird)。下面是我的代码,我希望构造函数在解析属性后初始化属性。
var getCookie = function(object, someParams) {
return connect(someParams)
.then(function(response){
self.cookie = response.cookie;//this should be done as part of object initialization.
done();
});
}
var app = function(){
var self = this;
getCookie(self);
//how to make sure that return happens after promise is resolved?
return self;
}
答案 0 :(得分:3)
如何确保在解决承诺后返回?
你做不到。 {1}}函数将在解析promise之前返回。这甚至可以通过JavaScript保证。
如何在构造函数中调用promise对象来设置属性
你没有。
相反,您可以使用工厂方法创建类的新实例,并返回一个解析为实例的promise。
示例:
app
一个使用异步进程的承诺。构造函数是同步的。虽然您可以在构造函数中使用promises,但在解析promise之前,返回的实例将不会完全初始化。但是你的代码永远不会知道它是什么时候。
这就是为什么有一个工厂方法,如果更可靠的方式返回一个解析为类实例的promise。