在es2017中,'这个'从异步方法访问时未定义

时间:2017-02-24 19:02:14

标签: javascript node.js ecmascript-6 ecmascript-2017

如何从异步方法调用时引用类实例。

class Senders {
  callSendAPI() {
    //Some code here
  }
  sendText() {
    this.callSendAPI();
  }
  async sendCards() {
    var dbpromise = await db.call();
    console.log('this= ', this);
    this.callSendAPI();
  }
}
export {Senders};
  

this = undefined

1 个答案:

答案 0 :(得分:1)

问题在于您正在使用的任何转换器,如果您正在使用它,或者根据调用它的方式使用函数的上下文。我在NodeJS v7.x中运行了以下片段,它运行得很好,显示这是Senders的类实例的值。

class Senders {
  async sendCards() {
    console.log('this= ', this);
  }
}

new Senders().sendCards();

如果您确定它不是您的转换器,那么在调用该函数时,请尝试使用bindcall / apply来控制执行上下文。