メモ:非同期処理

transitionが適用されたりされなかったりの対応

トグルスイッチでスイッチの変化に掛かる時間を指定したが、
処理の内容によって変化に掛かる時間の指定が効かない現象が発生
どうやらJavaScriptの非同期処理が原因のようなので、対応策を調査

症状の再現:reproduction.htmlの実行

マウスストーカーの OFF → ON の時だけ、
トグルスイッチの transition: 1s; が効かない
別の処理の時には効いている

reproduction.html のコード

トグルスイッチをクリックすると、トグルが移動して各処理を実行させる


//マウスストーカーON/OFFの切り替え
function switchingStalker(){

	let stalkers_box = document.getElementById("stalkers_box");

	if( stalkers_box == null ){
		drawMouseStalker();
	}else{
		removeMouseStalker();
	}
}
部分の drawMouseStalker(); を
	let drawStalker = function(){ drawMouseStalker(); };
	setTimeout( drawStalker , 1000 );
と遅延処理させればとりあえずの対応はできるが、保守性を考えるとこのままでは…

上記の通り修正:temporary.htmlの実行


今回はここまで
Promiseオブジェクトを使うものらしいが、すぐには理解できないので次回はそれについて調べてみようと思う
『同期処理』に続く

参考になったサイト

JavaScriptの同期、非同期、コールバック、プロミス辺りを整理してみる
はじめての同期処理、非同期処理 〜Promise〜