6

次のケースを検討してください。

const waitForEvent = async (api) => {
  api.on('eventOne', () => {
    return 'eventOne';
  })


  api.on('eventTwo', () => {
    return 'eventTwo';
  })


  api.on('eventThree', () => {
    return 'eventThree';
  })

  api.load();
}

私がやろうとしているのはapi、非同期関数内の変数にイベント コールバックをセットアップし、関数をトリガーしてから、api.load()最初に発生したイベントを返すことです。eventOne|eventTwo|eventThree

問題は、この構文が正しくなく、この例が機能しないことですasync/await を使用してこれを達成する方法を見つけることができず、次のような約束に戻る必要がありました。

const waitForEvent = (api) => {
  return new Promise(resolve) => {
    api.on('eventOne', () => {
      resolve('eventOne');
    })


    api.on('eventTwo', () => {
      resolve('eventTwo');
    })


    api.on('eventThree', () => {
      resolve('eventThree');
    })

    api.load();
  }
}

私の質問は、これは async/await を使用して達成できますか? とにかく、これは新しい async/await es7 構文を使用して行うことができますか?

4

1 に答える 1