日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结

發布時間:2023/12/2 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

超時調用需要使用window.setTimeout(code,millisec)方法

它接受兩個參數:要執行的代碼和以毫秒表示的時間(即在執行代碼前需要等待多少毫秒)。其中第一個參數可以是一個包含JS代碼的字符串(就和在eval()函數中使用的字符串一樣),也可以是一個函數。第二個參數表示等待多長時間的毫秒數,但經過該事件后指定的代碼不一定會執行

這是因為JS是一個單線程序的解釋器,一定時間內只能執行一段代碼,為了控制要執行的代碼就有一個JS任務隊列,這些任務會按照將他們添加到隊列的順序執行。

setTimeout()的第二個參數告訴JS再過多長時間把當前任務添加到隊列中。若隊列為空,這段添加的代碼會立即執行,若不為空,就要等前面的代碼執行完再執行。

//不建議傳遞字符串!可能會導致性能損失 setimeout("alert('hellow world!')",1000); //推薦以匿名函數調用方式 var timeoutId = setTimeout(function(){alert("hellow world!"); },1000);clearTimeout(timeoutId);

  調用setTimeout()之后,該方法會返回一個數值ID,ID是計劃執行代碼的唯一標示符,可以通過clearTimeout(ID)來取消未執行的超時調用.

setTimeout() 只執行 code 一次。如果要多次調用,請使用 setInterval() 或者讓 code 自身再次調用 setTimeout()。

間歇調用的方法是setInterval(),接受的第一個參數是要調用的函數或要執行的代碼串。,第二個參數是周期性執行或調用 code 之間的時間間隔,以毫秒計。

調用setInterval()方法同樣會返回一個ID,該ID可用于在將來某個時刻取消間歇調用。取消間歇調用的重要性要遠遠高于取消超時調用,因為在不加干涉的情況下,間歇調用將會一直執行到頁面卸載。

var num = 0,max = 10,intervalId = null; function incrementNumber(){num ;if(num = = max){clearInterval(intervalId);alert("Done");} } //以函數名調用方式 intervalId = setInterval(incrementNumber,500);

  在開發環境中,很少使用真正的間歇調用,原因是后一個調用可能會在前一個調用結束之前啟動(設置的周期時間millisec過短或函數代碼code執行時間過長),所以最好不要使用間歇調用。

問題:?JavaScript中setInterval傳參常見的問題(setInterval第一個參數加引號與不加引號區別)

function fun() {console.log("1"); }setInterval("fun()",1000);//全局作用域下正常執行setInterval(fun(),1000); //調用函數正常,setInterval調用出錯setInterval(fun,1000); //正確setInterval(function(){ //匿名函數調用console.log("1");})

如例子中所示,setInterval 第一個參數 可以是函數名、匿名函數、函數的引用以及其他可執行代碼。

setInterval("fun()",1000)

這種加引號的方式就可以理解為 可執行代碼??就行eval() 一樣去執行第一個參數,就是對fun方法的調用 理所當然的彈出 1??一秒鐘間隔,一直執行。

setInterval(fun(),1000)

fun() 是對函數的直接調用,也就是說當setInterval還沒有開始函數fun就執行了。如果這個函數沒有返回值或者返回值不是可執行的函數或者其他的代碼的話,就以上代碼而言只是彈出一個1之后就停止了,這種方法無意義。

setInterval(fun,1000)

此時setInterval的第一個參數fun看作參數為 函數名或函數的引用。

我個人認為更推薦以匿名函數的方式調用最好。


更多專業前端知識,請上 【猿2048】www.mk2048.com

總結

以上是生活随笔為你收集整理的JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。