内容
JavaScriptのPromiseとasync/awaitでの非同期処理について勉強していて、
- async functionはPromiseを返す
- returnするとresolveしたものとする
- awaitをつけて実行すると処理を待ってresolveした値を返してくれる
といった基礎的なことはわかったのですが、以下のコードが想定通りに動かない理由がはっきりとわかりません。
まだ初学者なので根本的な勘違いもあるかもしれませんが、動かない理由を言語化していただけると助かります。
動かないコード
js
1(async () => { 2 // 1秒ごとにa,b,cを表示させたい 3 await log('a'); 4 await log('b'); 5 await log('c'); 6})(); 7 8async function log(text) { 9 setTimeout(() => { 10 console.log(text); 11 return; 12 }, 1000); 13} 14 15// 1秒後にa,b,cが同時に表示される
動くコード
js
1(async () => { 2 await log('a'); 3 await log('b'); 4 await log('c'); 5})(); 6 7async function log(text) { 8 return new Promise(resolve => { 9 setTimeout(() => { 10 console.log(text); 11 resolve(); 12 }, 1000); 13 }); 14} 15 16// 1秒ごとにa,b,cが順番に表示される
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/29 03:38
2021/11/29 03:51
2021/11/29 03:54
2021/11/29 03:58
2021/11/29 04:06
2021/11/29 04:08
2021/11/29 05:54