lea*_*ode 1 javascript promise
我是 javascript 新手,我需要一些帮助来了解应如何使用 promise(使用 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;
}
Run Code Online (Sandbox Code Playgroud)
如何确保在承诺解决后返回?
你不能。该app函数将在承诺解决之前返回。JavaScript 甚至可以保证这一点。
如何在构造函数中调用promise对象来设置属性
你没有。
相反,您有类似工厂方法的东西,它创建类的新实例,并返回解析为实例的承诺。
例子:
function getCookie(someParams) {
return connect(someParams)
.then(function(response){
return response.cookie;
});
}
function App() {}
function getApp() {
var app = new App();
return getCookie(params)
.then(function (cookie) {
app.cookie = cookie;
return app;
});
}
// Usage
getApp().then(function(app) {
// use app
});
Run Code Online (Sandbox Code Playgroud)
一种是对异步进程使用 promise 。构造函数是同步的。虽然您可以在构造函数中使用承诺,但在承诺解决之前,返回的实例不会被完全初始化。但是您的代码永远不会知道那是什么时候。
这就是为什么有一个工厂方法返回一个承诺,如果更可靠的方式解析为类实例。
| 归档时间: |
|
| 查看次数: |
2674 次 |
| 最近记录: |