与Promises和Then块有一些问题。
基本上我无法从当时的区块访问aFunction(x)
。
这是为什么?我的代码如下:
class myClass {
aFunction(x) {
...
}
bFunction(y) {
return new Promise(function (resolve, reject) {
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
resolve(body.token)
} else {
console.log('ERROR: ' + err)
return reject(false)
}
})
}).then(function(res){
this.aFunction(res)
})
}
}
另一方面,我真的需要那个承诺块吗?
答案 0 :(得分:1)
您可以使用箭头功能来保留上下文:
.then(res => {
this.aFunction(res)
});
或者您可以将aFunction
直接传递给then
,并可能使用bind
来保留上下文。
.then(this.aFunction.bind(this));
或者您可以使用变量来保留上下文:
var self = this;
...
.then(function(res){
self.aFunction(res)
})
在这种情况下:
.then(function(res){
this.aFunction(res)
});
this
不再引用您的类的实例,它引用您作为参数传递给then
函数的匿名函数或者设置为它的任何上下文。