我正在用ES6编写一些Node代码。在我的代码中,我有一个类,如下所示。请注意,这是一个用于隔离和显示问题的基本示例。
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?
}
}
在本课程中,您会注意到我在构造函数中生成了一个随机数。我希望这个数字可以在我班上的所有方法中使用。但是,由于我有一种将承诺链接在一起的方法,因此this
在执行validateNumber
后会失去意义。
我该如何解决这个问题?
答案 0 :(得分:-1)
ES6引入了一项名为箭头功能的功能。除了语法比传统的function
语法更简洁之外,它还保留了这种语境。基本上,您的代码可以更改为以下内容:
var promise = new Promise((resolve, reject) => {
console.log(this); // MyClass
resolve({});
});
您还需要在then
this.validateNumber()
.then(() => this.generateImage());