setTimeoutの実行される順番
下記のスクリプトのa()関数のメッセージの順番はどうなるでしょうか?
答えは
1・1(アラート)
2・3(ステータスバー)
3・2(ステータスバー)
となります。
javascriptを使い始め1(アラート)→3秒後→2(ステータスバー)→3(ステータスバー)を期待してこのような順番で書いていていましたが思い通りにならず、経験的に1(アラート)→3(ステータスバー)→2(ステータスバー)とわかっていましたが「IT戦記」のBLOGにこのことが書いてあり改めてわかりました。
1・1(アラート)
2・3(ステータスバー)
3・2(ステータスバー)
となります。
javascriptを使い始め1(アラート)→3秒後→2(ステータスバー)→3(ステータスバー)を期待してこのような順番で書いていていましたが思い通りにならず、経験的に1(アラート)→3(ステータスバー)→2(ステータスバー)とわかっていましたが「IT戦記」のBLOGにこのことが書いてあり改めてわかりました。
function a(){
alert(1);
setTimeout("a2()", 3000);
window.status = 3;
}
function a2(){
var i=1+1;
window.status = i;
}
</script>
<form><input type="button" value="実験1" onclick="a()"> <input type="button" value="実験1" onclick="b()"></form>
alert(1);
setTimeout("a2()", 3000);
window.status = 3;
}
function a2(){
var i=1+1;
window.status = i;
}
</script>
<form><input type="button" value="実験1" onclick="a()"> <input type="button" value="実験1" onclick="b()"></form>
で、1(アラート)→3秒後→2(ステータスバー)→3(ステータスバー)の流れの処理にしたい時は、いつもはa()関数a1()関数のところを
function a(){
alert(1);
setTimeout("a2()", 3000);
}
function a2(){
var i=1+1;
window.status = i;
window.status = 3;
}
としていたのですが、alert(1);
setTimeout("a2()", 3000);
}
function a2(){
var i=1+1;
window.status = i;
window.status = 3;
}
function b(){
alert(1);
setTimeout(function() {
var i=1+1;
window.status = i;
window.status = 3;
}, 3000);
}
でいいんだと思ったのでメモしておきます。
alert(1);
setTimeout(function() {
var i=1+1;
window.status = i;
window.status = 3;
}, 3000);
}
スポンサードリンク