###実現したいこと
ページの背景色が一定時間ごとに延々と切り替わるページを作りたいと思っています。
春(ピンク)→夏(赤)→秋(茶)→冬(青)
→再び春(ピンク)を表示・・・エンドレスに実行
###前提
異なる処理を時間差で実行する場合はどのように記述するのが良いのでしょうか?
色々とネットで調べているとコールバック地獄に陥らないためにはES6の「Promiseオブジェクト」を使うのがいいという記事を見かけました。
自分なりに記述をしてみて1回だけ処理をまわすところまではできました。
これを繰り返し実行するにはどのように記述をしたら良いでしょうか。
もしくはもっと他に良い選択肢がありましたら教えていただけないでしょうか?
####知りたいこと
1つだけお答えいただくのでも構いませんのでどうぞ宜しくお願い申し上げます。
- 質問の仕様のような複数の処理をエンドレスに実行する場合の記述の仕方
- Promiseで記述する選択は良いのか?また繰り返し(再帰?)ができるのか
- もしPromiseの記述の仕方に誤りがあればご指摘いただけると助かります。
- そもそもの話ですが、何かをエンドレスに実行させること自体タブーであったりしますか?
検索をすると必ず何かの条件で終了するように記述がされている印象を受けました。
HTML
1 <body> 2 <div id="container" class="spring"> 3 背景色を<br> 4 春(ピンク)→夏(赤)→秋(茶)→冬(青)<br> 5 にエンドレスに変化させたい。 6 </div> 7 <script src="script.js"></script> 8 </body>
css
1.spring { background-color: pink; } 2.summer { background-color: red; } 3.autumn { background-color: brown; } 4.winter { background-color: blue; }
JavaScript
1//Promiseオブジェクト 1回実行させるところまでしかできていない 2 let container = document.getElementById('container'); 3 4 5 function changeSeason (season) { 6 return new Promise((resolve, reject) => { 7 setTimeout(() => { 8 if(season) { 9 resolve( 10 container.className = season 11 ); 12 } else { 13 reject(); 14 } 15 }, 3000); 16 }); 17 } 18 19 changeSeason('summer') 20 .then( 21 response => { 22 return changeSeason('autumn'); 23 } 24 ) 25 .then( 26 response => { 27 return changeSeason('winter'); 28 } 29 ) 30 .then( 31 response => { 32 return changeSeason('spring'); 33 } 34 ) 35 36
###追記
若干内容を変更して別の質問として投稿しております。
https://teratail.com/questions/126546

回答1件
あなたの回答
tips
プレビュー