1. 程式人生 > >JS 循環定時的一些思考

JS 循環定時的一些思考

思考 bsp .com 9.png get img clas code 奇怪

網上也有例子,

function doSetTimeout(i) {
  setTimeout(function() { console.log(i); }, 1000);
}

for (var i = 1; i <= 8; ++i)
  doSetTimeout(i);

技術分享圖片

1到8 是幾乎同時輸出的,

setTimeout(getResult,1000);//定時獲取短信內容
function getResult(){ 
console.log("aa");
setTimeout(getResult,1000);
}

上面可以定時,一秒秒輸出,如何要控制次數,可以加個變量

 var i=0; 
 var dotimes =4;
setTimeout(getResult,1000);
function getResult(){ 
i++;
console.log(i);
if(i<dotimes){
setTimeout(getResult,1000);
}
}

但是上面的代碼有個很奇怪的現象

技術分享圖片

為什麽不是預想那樣 一開始就輸出1呢,把i++ 換成 i=i+1;也是一樣。var 緩存let也一樣,後來問人,其實那個2 和6不是程序輸出的,是調用

setTimeout的返回值,控制臺也默認輸出了,和程序無關,下方將函數賦值給一個 a,就不輸出來了。
var  i=0; 
var dotimes =4;
var a=setTimeout(getResult,1000);
function getResult(){ 
i=i+1;
console.log(i);
if(i<dotimes){
setTimeout(getResult,1000);
}
}

JS 循環定時的一些思考