[英]Access an instance variable inside an anonymous function inside prototype method
[英]How to access class method inside an anonymous function
我的 JS class 中有一个方法,在 Promise 的回调中,我希望它调用另一个 class 方法。
class MyClass {
myClassMethod(arg1) {
// this method did get called
}
aSecondClassMethod() {
//...
}
methodWithPromise() {
var myClassMethod = this.myClassMethod;
let aPromise = methodReturnPromise();
aPromise.then(function (value) {
myClassMethod(value);
}
}
所以我创建了一个 var 调用myClassMethod
并将其设置为this.myClassMethod
。 当我调试代码时,myClassMethod 确实在 Promise 的then
回调中被调用。
我遇到的问题是当我的myClassMethod()
调用其他 class 方法() 时,即
myClassMethod(args) {
aSecondClassMethod();
}
我收到错误消息说aSecondClassMethod
未定义。 我试过了
myClassMethod(args) {
this.aSecondClassMethod();
}
但它给了我同样的错误。 我想我可以通过为 myClassMethod() 调用的每个 class 方法声明一个 var 来解决这个问题。
var aSecondClassMethod= this.aSecondClassMethod;
但这对于继续维护代码似乎很麻烦。
我想知道是否有更好的方法来做到这一点。
使用箭头 function,因为它捕获封闭上下文的this
值。
aPromise.then(value => this.myClassMethod(value));
我还建议使用新的() => {}
function 符号来定义包含 promise 的 class 方法。如果没有它(或老式绑定) this
仍然是undefined
。
我一贯的作风:
class MyClass {
myClassMethod = (value) => {
//something..
};
methodWithPromise = () => {
somePromise
.then((res) => {
this.myClassMethod(res);
})
.catch((err) => {
console.error(err);
return;
});
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.