javascript / Node.js
我如何在promise中检索对此对象的引用。然后?
var controller = new MyController(params);
controller.action_send();
/////////////////////////////////
class MyController{
constructor(params)
{
this.params = params;
}
action_send()
{
var promise = ext_lib.send();
promise.then(
function(details) {
this.action_save(details);
//(node:27014) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'action_save' of undefined
});
}
action_save(details)
{
save (this.params, details);
}
}
PHPStorm警告说 警告不要尝试通过此方法引用ECMAScript类成员的常见错误。 非lambda的嵌套函数中的限定符。 嵌套函数(不是lambda)中的this是函数自己的“ this”,与外部类无关。
从现在开始tks
答案 0 :(得分:2)
您要使用箭头功能:(details) => {...}
。这将使作用域与函数外部的作用域相同,因此this
应该是您的类。
我还建议您查找function
语法和=>
语法之间的区别,有人可能会比我更好地解释它。
答案 1 :(得分:2)
答案 2 :(得分:0)
只需添加到以上答案中,这就是您的代码应为的样子
promise()
.then(function (results) {
}.bind(this)
).catch(...);
确保绑定只是在关闭 then()
之前