更新時間:2020年08月24日15時40分 來源:傳智播客 瀏覽次數(shù):
setTimeout() 方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達(dá)式。
語法
setTimeout 方法接收兩個參數(shù),第一個參數(shù)為回調(diào)函數(shù)函數(shù)或字符串,第二個參數(shù)為觸發(fā)時間(單位:毫秒)
參數(shù) | 描述 |
code | 必需。要調(diào)用的函數(shù)后要執(zhí)行的 JavaScript 代碼串。 |
millisec | 可選。執(zhí)行或調(diào)用 code/function 需要等待的時間,以毫秒計。默認(rèn)為 0。 |
param1, param2, ... |
可選。 傳給執(zhí)行函數(shù)的其他參數(shù)(IE9 及其更早版本不支持該參數(shù)) |
打開上面代碼網(wǎng)頁,三秒后就會出現(xiàn)一個 alert 對話盒,提示“對不起, 三秒鐘已到”。
setInterval() 方法可按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達(dá)式。
setInterval() 方法會不停地調(diào)用函數(shù),直到 clearInterval() 被調(diào)用或窗口被關(guān)閉。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的參數(shù)。
語法
參數(shù) | 描述 |
code |
必需。要調(diào)用的函數(shù)或要執(zhí)行的代碼串。 |
millisec |
必須。周期性執(zhí)行或調(diào)用 code 之間的時間間隔,以毫秒計。 |
代碼演示:
盡量不要用setInterval()
原因如下:
(1)setInterval()無視代碼錯誤
setInterval有個討厭的習(xí)慣,即對自己調(diào)用的代碼是否報錯這件事漠不關(guān)心。換句話說,如果setInterval執(zhí)行的代碼由于某種原因出了錯,它還會持續(xù)不斷(不管不顧)地調(diào)用該代碼。
(2)setInterval無視網(wǎng)絡(luò)延遲
假設(shè)你每隔一段時間就通過Ajax輪詢一次服務(wù)器,看看有沒有新數(shù)據(jù)(注意:如果你真的這么做了,那恐怕你做錯了;建議使用“補(bǔ)償性輪詢”(backoff polling))。而由于某些原因(服務(wù)器過載、臨時斷網(wǎng)、流量劇增、用戶帶寬受限,等等),你的請求要花的時間遠(yuǎn)比你想象的要長。但setInterval不在乎。它仍然會按定時持續(xù)不斷地觸發(fā)請求,最終你的客戶端網(wǎng)絡(luò)隊列會塞滿Ajax調(diào)用。
(3)setInterval不保證執(zhí)行
與setTimeout不同,你并不能保證到了時間間隔,代碼就準(zhǔn)能執(zhí)行。如果你調(diào)用的函數(shù)需要花很長時間才能完成,那某些調(diào)用會被直接忽略。
setTimeout() 方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達(dá)式,而setInterval()則可以在每隔指定的毫秒數(shù)循環(huán)調(diào)用函數(shù)或表達(dá)式,直到clearInterval把它清除。
也就是說setTimeout()只執(zhí)行一次,setInterval()可以執(zhí)行多次。
兩個函數(shù)的參數(shù)也相同,第一個參數(shù)是要執(zhí)行的code或句柄,第二個是延遲的毫秒數(shù)。
·setTimeout用于延遲執(zhí)行某方法或功能。
·setInterval則一般用于刷新表單,對于一些表單的假實時指定時間刷新同步。
猜你喜歡: