Closed2
asyncで定義した関数内でそれとは別のasyncで定義していない関数を呼び出した際、その関数を呼び出しする手前でawaitしてても効かない例
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
}
test()
の処理系から離れて、testA()
に 処理系が渡るためだと思う。
下記のようにawaitを明示する必要がある。
const c = testA(a, b) // error
const c = testA(await a, await b) // success
このスクラップは2022/04/15にクローズされました