我正在尝试更新超出promise函数范围的值,但是很难做到这一点。我认为设置self =可以纠正建议的here的范围问题,但是self.value仍然在承诺范围之外为0。相关代码如下。
window.App = {
foo: function() {
var self = this;
self.value = 0;
self.func1 = function() {
func2().then(function(result1) {
return func3(result1);
}).then(function(result2) {
self.value = result2;
})
}
},
bar: function() {
var fooObject = new this.foo();
fooObject.func1();
},
baz: function() {
var fooObject = new this.foo();
func4(fooObject.value);
}
}
我怎样才能在promise中设置self.value的值?我想稍后通过foo.value在App中的代码中访问此值。
答案 0 :(得分:-2)
以下是我尝试像您的代码一样构建的Promise的示例:
window.App = {
foo: function() {
var self = this;
self.value = 0;
this.func2 = function(){
return 1;
}
self.func1 = function(){
return new Promise((resolve, reject) => {
console.log("before execute value: " + self.value);
resolve(self.func2());
}).then(function(result) {
self.value = result;
console.log("promise then value: " + self.value);
});
}
}
}
var o = new window.App.foo();
var promise = o.func1();
console.log("outside value: "+o.value);
promise.then(function(){
console.log("outside promise then value: "+o.value);
})