這裏是我的代碼的setTimeout()無法正常工作
(function() {
(function DeleteREG(i) {
setTimeout(function() {
if (i > 0) {
setTimeout(function stop_() {
alert(i);
}, 2000);
setTimeout(function() {
i--;
DeleteREG(i);
}, 800);
}
}, 4000);
})(5);
})();
根據它的代碼應該在i=5,4,3,2,1
提醒。但它提醒在i=4,3,2,1,0
。可誰能請解釋我爲什麼不工作?應該是什麼整流後的代碼能夠正常工作?同樣的事情發生了下面的代碼也
(function() {
(function DeleteREG(i) {
setTimeout(function() {
if (i > 0) {
setTimeout(function stop_() {
alert(i);
}, 2000);
i--;
DeleteREG(i);
}
}, 4000);
})(5);
})();
並請解釋我以書面format.How解決擺脫這個問題的?
第二個超時將在第一個超時之前運行,所以'i'在調用'alert'之前遞減。 – MarcoL 2014-10-04 17:07:05