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