レッスンに戻る

非非同期から非同期を呼び出す

fという「通常の」関数があります。async関数wait()を呼び出して、fの中でその結果を使用するにはどうすればよいですか?

async function wait() {
  await new Promise(resolve => setTimeout(resolve, 1000));

  return 10;
}

function f() {
  // ...what should you write here?
  // we need to call async wait() and wait to get 10
  // remember, we can't use "await"
}

追伸。このタスクは技術的には非常に簡単ですが、この質問は非同期/待機に慣れていない開発者には非常に一般的です。

内側の仕組みを知っていると役立つ場合があります。

async呼び出しをプロミスとして扱い、.thenを添付するだけです

async function wait() {
  await new Promise(resolve => setTimeout(resolve, 1000));

  return 10;
}

function f() {
  // shows 10 after 1 second
  wait().then(result => alert(result));
}

f();