Closed2

asyncで定義した関数内でそれとは別のasyncで定義していない関数を呼び出した際、その関数を呼び出しする手前でawaitしてても効かない例

からころ / karacoroからころ / karacoro
const testA = (a, b) => {
  return a + b
}
const test = async () => {
  const sleep = (msec) => new Promise((resolve) => setTimeout(resolve, msec))
  const sleep15s = async () => {
    await sleep(15000)
    console.log('sleep 15s')
    return 1
  }
  const sleep30s = async () => {
    await sleep(30000)
    console.log('sleep 30s')
    return 2
  };
  const a = sleep15s()
  const b = sleep30s()
  await Promise.all([a, b])
  const c = testA(a, b)
  console.log(c) // => error
}
からころ / karacoroからころ / karacoro

test()の処理系から離れて、testA() に 処理系が渡るためだと思う。
下記のようにawaitを明示する必要がある。

const c = testA(a, b) // error
const c = testA(await a, await b) // success
このスクラップは2022/04/15にクローズされました