当前位置: 代码迷 >> JavaScript >> 将ES7异步回调与其父范围上下文绑定的最简洁方法是什么
  详细解决方案

将ES7异步回调与其父范围上下文绑定的最简洁方法是什么

热度:66   发布时间:2023-06-05 09:22:29.0

我想使用ES7异步回调编写这样的代码。

class Foo {

  bar(app) {

    // const that = this
    app.on('something', async function() {
      await this.baz() // `this` is `app`. I want it to be the instance of Foo (`that`)
    }

  }

  async baz() {
    console.log('baz')
  }

}

在ES6中,我们可以使用匿名函数,但是我不能在内部使用await。 我可以使用诺言,但我希望等待的简单性。

app.on('something', () => {
  this.baz()
})

我们可以使用单独的方法进行回调。 但这很冗长。

class Foo {

  bar(app) {
    app.on('something', this.onSomething)
  }

  async onSomething() {
    await this.baz() // `this` is `app`. I want it to be the instance of Foo (`that`)
  }

  async baz() {
    console.log('baz')
  }

}

那么,鉴于我的限制,最好的方法是什么?

遗漏了显而易见的东西-我以为我早些时候读过一些东西,无法将aunc函数与async一起使用。

app.on('live-app:start', async () => { this })
  相关解决方案