我正在用ES6编写一些节点代码。在我的代码中,我有一个类,如下所示。请注意,这是一个旨在隔离和显示问题的基本示例。JavaScript - 使用“this”与链接的承诺
class MyClass {
constructor() {
this.id = uuid();
this.number = Math.floor((Math.random() * 100) + 1);
}
process() {
this.validateNumber()
.then(this.generateImage)
.catch(function(err) {
console.log(err);
})
;
}
validateNumber() {
let self = this;
var promise = new Promise(function(resolve, reject) {
// do stuff with self.number
resolve({});
});
}
generateImage() {
console.log(this);
// the above prints "undefined" in the console window
// how do I get this.number again?
}
}
在这个类中,你会注意到我在我的构造函数中生成一个随机数。我希望这个数字在我班的所有方法中都可以使用。但是,由于我有一个链接在一起的承诺的方法,所以执行validateNumber
之后,就像this
失去意义。
我该如何解决?
的背景下,我想你的意思是'。然后(this.generateImage)'? – Bergi
不,它失去了它的意思,当你将'generateImage'传递给'then'而没有将它绑定到你的实例。 – Bergi
@Bergi ......你是对的。现在更新。 – user70192