我有一个问题,我觉得处理javascript的特性。基本上,我试图在promise的then函数中设置一个成员/类变量。例如:
this.intuitAuth.authenticate()
.then(function(oauthObj){
this.setOauthObj(oauthObj);
return oauthObj;
});
其中this.setOauthObj(oauthObj);
设置外部对象的成员变量。现在我想也许我的问题是this
是问题,因为我在想this
引用then
函数中的函数。所以我的问题是,如何在承诺的then
函数内设置成员变量?或者甚至是可能的。
我想要实现这个的原因是因为我希望在对象的实例中设置这个变量,所以我不必将它作为参数传递给每个方法调用。
答案 0 :(得分:1)
函数的此关键字在JavaScript中的行为略有不同 与其他语言相比。它之间也有一些差异 strict mode和非严格模式。
至少有两种方法可以解决问题:
假设this.intuitAuth
中使用的这个是所需的 this ,那么您可以将函数范围绑定到以下内容:
this.intuitAuth.authenticate()
.then(function(oauthObj){
this.setOauthObj(oauthObj);
return oauthObj;
}.bind(this));
this
。var _this = this;
this.intuitAuth.authenticate()
.then(function(oauthObj){
_this.setOauthObj(oauthObj);
return oauthObj;
});
现在,其中任何一个都可能解决您当前的问题。但是你需要理解问题存在的原因,因此你应该阅读更多关于how the value of this
is set in a scope的内容。