<!DOCTYPE html> <html> <head> <meta http-equiv="content-language" content="ja"> <meta charset="UTF-8"> <TITLE>タイマー</TITLE> <meta name="viewport" content="width=device-width,initial-scale=1"> <script> //タイマーのセット&キャンセル// function start1() { form.message1.value = "3秒タイマーセットしました" ; id1 = setTimeout(stop1,3000) ; } function stop1() { form.message1.value = "3秒経過しました" ; } function cancel() { clearTimeout(id1) ; form.message1.value = "キャンセルしました" ; } //タイマーを連続的に作動させる// var i = 1 ; function start2() { id2 = setInterval(count,1000) ; form.message2.value = "タイマー開始しました" ; } function count() { form.message2.value = "1秒経過しました(" + i + "回目)" ; i++ ; } function stop2() { clearInterval(id2) ; form.message2.value = "停止しました" ; } //アニメーション要求処理// function animation() { form.message3.value = j + "回目" ; j++ ; if ( stopFlag == 0 ) { requestAnimationFrame(animation) ; } else { form.message3.value = "停止" ;} } function start3() { stopFlag = 0 ; j = 1 ; animation() ; } function stop3() { stopFlag = 1 ; } </script> </head> <body> <hr> <h4>タイマーをセットする</h4> <form Name="form"> <p> <input type="button" value="スタート" onClick="start1()"> <input type="button" value="キャンセル" onClick="cancel()"> <p> <input NAME="message1" value="" size=30> <hr> <h4>タイマーを連続的に作動させる</h4> <p> <input type="button" value="スタート" onClick="start2()"> <input type="button" value="ストップ" onClick="stop2()"> <p> <input NAME="message2" value="" size=30> <hr> <h4>アニメーション処理要求</h4> <p> <input type="button" value="スタート" onClick="start3()"> <input type="button" value="ストップ" onClick="stop3()"> <p> <input NAME="message3" value="" size=30> <hr> </form> </body> </html>
<!DOCTYPE html> <html> <head> <meta http-equiv="content-language" content="ja"> <meta charset="UTF-8"> <TITLE>時間のカウント</TITLE> <meta name="viewport" content="width=device-width,initial-scale=1"> <script> <!-- //タイマー起動 function time() { tmr=setTimeout("time()",10); sday=new Date(); document.myform.ctime.value=((sday.getTime()-st)/1000).toFixed(3); } //スタート function srt() { sday=new Date(); st=sday.getTime(); time(); } //ストップ function stp() {clearTimeout(tmr);} //--> </script> </head> <body> <p>時間のカウント</p> <hr> <FORM Name="myform"> <p> <input type="button" value="スタート" onClick="srt()"> <input type="button" value="ストップ" onClick="stp()"> <p> <INPUT NAME="ctime" value="" size=20> </form> </BODY> </HTML>
一定時間処理を待つ (sleepする) 機能とは、プログラムが一時的に動作を停止することを可能にします。
Promiseは、非同期操作が成功したか失敗したかを表すオブジェクトです。複数の非同期処理を管理したり、連鎖させる時に使います。
async/awaitは、非同期処理をより読みやすく書くための構文です。Promiseを使って非同期処理を行う時に便利です。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>sleep</title> <script> function sleep(ms) { return new Promise(function(resolve) { setTimeout(resolve, ms) } ) } async function start() { form.message.value = ("処理開始"); await sleep(3000); form.message.value = ("3秒後に表示"); } </script> </head> <body> <h4>スリープ処理</h4> <form name="form"> <p> <input type="button" value="スタート" onClick="start()"> <p> <input name="message" value="" size=30> </form> </body> </html>