在promise中的ES6中访问此对象

时间:2016-05-26 23:07:54

标签: ecmascript-6 this es6-promise

我有一个ES6类,它有一个延迟对象作为实例变量。我试图访问angularjs promise中的this对象,类似于以下内容,但this未定义,根据babel的说法:

class MyClass {

  constructor($q) {
    this.deferred_ = $q.defer();
  }

  myMethod() {
    this.deferred_.promise.then(data => {
      console.log(this);
    });
  }
}

不知何故,我认为我应该使用两个箭头函数将this绑定到promise的范围,但我无法弄清楚如何。知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

您正在使用的库无关紧要,您无法更改箭头功能的上下文。

var x = 5;
var f = ()=> this.x;

f();             //=> 5
f.call({x:3});   //=> 5
z.bind({x:3})(); //=> 5

因此,正如其他人所评论的那样,在您发布的代码中,this将引用MyClass的实例。而且没有任何东西可以改变它。