javascriptでPromiseをasync/awaitに書き換えるには?
javascriptの非同期処理の制御を勉強しております。
下記コードを実行すると、
const timeoutFunc = () => { return new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log("hello") resolve() },1000) }) } const asyncFunc = async () => { await timeoutFunc() console.log("world") } asyncFunc()
1秒後に
hello world
と表示されます。
awaitによって、非同期処理の完了をきちんと待っています。
このコードのtimeoutFunc関数を、asyncに書き換えようと思い、
const timeoutFunc = async () => { setTimeout(()=>{ console.log("hello") return },1000) }
や、
const timeoutFunc = () => { return setTimeout(async ()=>{ console.log("hello") return },1000) }
としてみたのですが、結果は、
world hello
と、awaitが効かず、console.log("world")の方が先に実行されてしまいます。
async関数内でreturnすると、Promise.resolve()が返る、という認識なので、asyncに書き換えても結果は変わらないと思っていたのですが、なぜこの様な動作になるのでしょうか?
また、どの様に書けば、きちんとawaitが効く様になるのでしょうか?
ご教授、宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/08 12:21
2019/12/08 12:24