为什么在使用 promise 时,类方法中的 “this” 未定义?
2022-08-30 04:58:57
我有一个javascript类,每个方法都返回一个承诺。我想知道为什么 在 和 中未定义。有没有更正确的方法来编写此代码?Q
this
method2
method3
function MyClass(opts){
this.options = opts;
return this.method1()
.then(this.method2)
.then(this.method3);
}
MyClass.prototype.method1 = function(){
// ...q stuff...
console.log(this.options); // logs "opts" object
return deferred.promise;
};
MyClass.prototype.method2 = function(method1resolve){
// ...q stuff...
console.log(this); // logs undefined
return deferred.promise;
};
MyClass.prototype.method3 = function(method2resolve){
// ...q stuff...
console.log(this); // logs undefined
return deferred.promise;
};
我可以使用以下命令解决此问题:bind
function MyClass(opts){
this.options = opts;
return this.method1()
.then(this.method2.bind(this))
.then(this.method3.bind(this));
}
但不完全确定为什么是必要的;正在杀了吗?bind
.then()
this