javascript - 在 es2017 中,从异步方法访问时 'this' 未定义

标签 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

最佳答案

问题要么出在您使用的任何转译器(如果您使用的是转译器)上,要么出在给定函数调用方式的上下文中。我在 NodeJS v7.x 中运行了以下代码片段,它工作得很好,表明它的值是 Senders 的一个类实例。

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

new Senders().sendCards();

如果您确定它不是您的转译器,请尝试使用 bind 控制执行上下文或 call/apply当您调用函数时。

关于javascript - 在 es2017 中,从异步方法访问时 'this' 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42446371/

相关文章:

Javascript 反向切片

javascript - 在 Node.JS 中编写 CLI 时,您是否应该始终使用向后兼容的代码?

node.js - Gulp 错误 = 文件已存在,

javascript - 使用 ES6 箭头函数 Babelifying JavaScript 模块模式

javascript - 使用变量作为键和值创建对象

javascript - 在 ES6 类数组中调用带有回调的方法

javascript - 通过单击 React Native 中的复选框来更改片段

JavaScript 将变量传递给内部单击函数不起作用

javascript - REPL和脚本之间的'this'不同

node.js - Mongoose :MongoError 没有地理搜索索引