这个。*不能使用async / await javascript(node 8.6.0)

时间:2017-10-01 12:54:16

标签: node.js async-await ecmascript-2017

我无法找到导致此错误的原因:

enter image description here

这是我的代码:



  create: async (data) => {
    const insertedData = await dbProvider.query('INSERT INTO users SET ?', data);
    console.log(this);
    return await this.getById(insertedData.insertId);
  },
  getById: async (id) => {
    const data = await dbProvider.query('SELECT * From users WHERE id = ?', id);
    return data;
  },




使用await repo.create(data)调用Create; create调用this.getById会导致错误。 知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

因为箭头函数预先绑定到词汇this

如果你想在函数内部使用动态this,它就不能是箭头函数:

  async create(data) {
    const insertedData = await dbProvider.query('INSERT INTO users SET ?', data);
    console.log(this);
    return await this.getById(insertedData.insertId);
  },
  async getById(id) {
    const data = await dbProvider.query('SELECT * From users WHERE id = ?', id);
    return data;
  },