【发布时间】:2017-07-15 17:48:20
【问题描述】:
从异步方法调用时如何引用类实例。
class Senders {
callSendAPI() {
//Some code here
}
sendText() {
this.callSendAPI();
}
async sendCards() {
var dbpromise = await db.call();
console.log('this= ', this);
this.callSendAPI();
}
}
export {Senders};
这=未定义
【问题讨论】:
-
你是在使用 babel 还是别的什么?
-
如果这听起来像是该转换器中的一个讨厌的错误。
-
sendCards()怎么称呼?您需要显示该代码,因为它决定了this在sendCards()内的值。问题可能出在您未显示的调用代码中。我会冒险猜测您将obj.sendCards作为回调传递,这就是它不起作用的原因。如果我的猜测是正确的,请参阅How to get callback to work with “this” in class scope。 -
同意jfriend00。您发布的代码应该按照您期望的方式工作。但是在 js 中,
this的值不是取决于你如何定义函数和类,而是取决于你如何调用函数。因此,您并没有准确地显示导致错误的原因 -
也许您应该阅读已接受的答案以了解
this的真正工作原理。请注意,答案中没有与类或异步相关的任何内容,因为它们无关紧要:stackoverflow.com/questions/13441307/…
标签: javascript node.js ecmascript-6 ecmascript-2017