在promise内部在外部范围内设置变量

时间:2018-06-21 10:35:25

标签: javascript scope promise

我正在尝试更新超出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中的代码中访问此值。

1 个答案:

答案 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);
})