具体的であること:
- 5 秒後に実行する必要があるコードがあります
- そのコードは関数内にあります
- その関数は、すでに setTimeout() 内にある他の関数によって数回呼び出されます
何が起こるかというと、最初は問題なく実行されますが、次の実行では 5 秒も待ちません!
コードは次のようになります。
//==================== create variables: ====================
var x = 0;
//==================== create functions: ====================
function wait5s() {
setTimeout(function() {
alert("alert # " + x + "\nNext alert will pop up in 5 seconds now!");
}, 5000);
x++;
}
function repeat5times(){
while (x<5) {
wait5s()
}
}
//==================== run this: ====================
alert("Click Ok and Wait 10 seconds for next alert!");
setTimeout(function() {
repeat5times();
}, 5000);
このコードは私のオリジナルのコードではありませんが、問題は同じです: - アラートがポップアップする前に x が 5 に増加します! すると次々と出現!x++;
setTimeout を wait5s() 内に配置しようとしましたが、ブラウザーが応答しなくなりました。:(
各アラートの間に 5 秒の遅延が必要です!
それで、私は何を間違っていますか?:\ 前もって感謝します ;)