実現したいこと
JavaScriptで、カウントダウンを表示し、その後になって処理を実行したい。
前提
JavaScriptのasync、awaitを使ってカウントダウンを実現するとことまでは来ましたが、このカウントダウンを実行中でもプログラムは次に進んで処理を実行してしまいます(当たり前ですが、、、)。
実現したいのは、consoloe.log("end")というのが、カウントダウン後に実行させることです。
発生している問題・エラーメッセージ
あえて非同期処理をせず、最後のconsole.logの実行を待たせておきたいのですが、やり方が分かりません。
該当のソースコード
HTML
1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <link rel="stylesheet" href="style.css"> 7 <title>Document</title> 8</head> 9<body> 10 <div class="box"> 11 <p class="num"></p> 12 </div> 13 <script src="main.js"></script> 14</body> 15</html>
CSS
1* { 2 margin: 0; 3 padding: 0; 4 box-sizing: border-box; 5} 6 7.box { 8 width: 500px; 9 height: 500px; 10 background-color: rgb(254, 243, 230); 11 position: relative; 12 top: 100px; 13 left: 100px; 14 display: grid; 15 place-items: center; 16} 17.box .num { 18 width: 450px; 19 height: 450px; 20 text-align: center; 21 line-height: 450px; 22 font-size: 400px; 23}/*# sourceMappingURL=style.css.map */
JavaScript
1const box = document.querySelector(".box"); 2const num = document.querySelector(".num"); 3 4const cnt_down = async(val) => { 5 for(let i = val; i >= 0; i--) { 6 await print(i); 7 } 8}; 9 10const print = (val) => { 11 return new Promise(res => { 12 setTimeout(function() { 13 num.textContent = val; 14 res(); 15 },1000); 16 }); 17} 18 19console.log("start"); 20 21cnt_down(5); 22 23console.log("end"); 24
どなたか、よろしくお願いいたします。
![guest](/img/icon/icnUserSample.jpg)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/07/22 04:19
2023/07/22 07:10