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。我可以使用 Promise,但我想要 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')
  }

}

那么考虑到我的限制,最好的方法是什么?

4

1 回答 1

1

错过了明显的 - 我以为我之前读过一些东西,不可能将 anon funcs 与 async 一起使用。

app.on('live-app:start', async () => { this })
于 2015-07-26T14:26:11.540 回答