網上也有例子,緩存
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); }
上面能夠定時,一秒秒輸出,如何要控制次數,能夠加個變量spa
var i=0; var dotimes =4; setTimeout(getResult,1000); function getResult(){ i++; console.log(i); if(i<dotimes){ setTimeout(getResult,1000); } }
可是上面的代碼有個很奇怪的現象code
爲何不是預想那樣 一開始就輸出1呢,把i++ 換成 i=i+1;也是同樣。var 緩存let也同樣,後來問人,其實那個2 和6不是程序輸出的,是調用blog
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); } }