摘要:若是函數(shù),則只需要寫函數(shù)名,可以不加雙引號和括號必需。返回值返回整型定時器也就是這個的唯一標(biāo)示符。取消定時器利用取消運行機制性能性能較優(yōu)穩(wěn)定性更穩(wěn)定鏈?zhǔn)秸{(diào)用實現(xiàn)作用域相關(guān)經(jīng)典面試題為每個定時器處理函數(shù)創(chuàng)建不同的變量副本。
setTimeout | setInterval | ||
---|---|---|---|
描述 | 實現(xiàn)的是根據(jù)給定的時間間隔,每隔一段時間調(diào)用一次函數(shù)或執(zhí)行一次代碼 | 實現(xiàn)的是根據(jù)給定的時間,在經(jīng)過該時間之后只調(diào)用一次函數(shù)或執(zhí)行一次代碼 | |
語法 | setTimeout (callback, delay, arg1, ..., argn) | setInterval (callback, interval, arg1, ..., argn) | |
參數(shù) | callback | 必需。要調(diào)用的函數(shù)或要執(zhí)行的代碼串。(若是函數(shù),則只需要寫函數(shù)名,可以不加雙引號和括號) | |
delay / interval | 必需。在執(zhí)行代碼前需等待的毫秒數(shù)。 | ||
arg1, ..., argn | 可選。給回調(diào)函數(shù)的傳參。 | ||
返回值 | 返回整型定時器id,也就是這個setTimeout/setInterval 的唯一標(biāo)示符。 | ||
取消定時器 | 利用 clearTimeout(id) 取消 | ||
運行機制 | |||
性能 | 性能較優(yōu) | ||
穩(wěn)定性 | 更穩(wěn)定 |
var interval = 3 * 1000, count = 0; function someOpration(){ var startTime = new Date(); console.log(startTime.toLocaleString() + " " + startTime.getMilliseconds()); var sum = 0; for(let i=0; i < 2000000000; i++){ sum += i; } var endTime = new Date(); console.log(endTime.toLocaleString() + " " + endTime.getMilliseconds()); var duration = endTime - startTime; console.log(duration); }
setTimeout 鏈?zhǔn)秸{(diào)用
function slow1(){ if(count < 5){ someOpration(); count = count + 1; setTimeout(slow1, interval); } } setTimeout(slow1, interval);
setInterval 實現(xiàn)
var interval = 3 * 1000, count = 0; function slow2(){ if(count < 5){ someOpration(); count = count + 1; } else { clearTimeout(timerId); } } var timerId = setInterval(slow2, interval)setTimeout作用域相關(guān)經(jīng)典面試題
for (var i = 1; i <= 2; i++) { setTimeout(function() { alert(i) }, 100); } // 3 // 3為每個定時器處理函數(shù)創(chuàng)建不同的“i”變量副本。比如這樣
for (var i = 1; i <= 2; ++i){ doSetTimeout(i); } function doSetTimeout(i) { setTimeout(function() { alert(i); }, 100); }可簡寫為
for (var i = 1; i <= 2; i++) { setTimeout(function(j) { console.log(j) }, 100, i); }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/99024.html
摘要:瀏覽器與的異同,以及部分機制有人對部分迷惑,本身構(gòu)造函數(shù)是同步的,是異步。瀏覽器的的已全部分析完成,過程中引用阮一峰博客,知乎,部分文章內(nèi)容,侵刪。 瀏覽器與NodeJS的EventLoop異同,以及部分機制 PS:有人對promise部分迷惑,Promise本身構(gòu)造函數(shù)是同步的,.then是異步。---- 2018/7/6 22:35修改 javascript 是一門單線程的腳本...
摘要:定時器方法相關(guān)方法有四種。返回值返回值是一個正整數(shù),表示定時器的編號。這個值可以傳遞給來取消該定時器。使用方法很簡單只有一個參數(shù),該參數(shù)為您要取消定時器的標(biāo)識符。用法很簡單當(dāng)代碼運行到這行的時候,會取消所設(shè)置的定時器。 簡單介紹在JavaScript中定時器有兩個 setInterval() 與 setTime...
摘要:由于引擎同一時間只執(zhí)行一段代碼這是由單線程的性質(zhì)決定的,所以每個代碼塊阻塞了其它異步事件的進(jìn)行。這意味著瀏覽器將等待著一個新的異步事件發(fā)生。異步的任務(wù)執(zhí)行的順序是不固定的,主要看返回的速度。 我們經(jīng)常說JS是單線程的,比如node.js研討會上大家都說JS的特色之一是單線程的,這樣使JS更簡單明了,可是大家真的理解所謂JS的單線程機制嗎?單線程時,基于事件的異步機制又該當(dāng)如何,這些知識...
摘要:當(dāng)間隔時間設(shè)置較小時,將會導(dǎo)致回調(diào)函數(shù)堆積。處理可能阻塞的代碼最簡單且最可控的方式就是在回調(diào)函數(shù)內(nèi)部使用函數(shù)。但是很明顯,由于指定最大值的限制,還會有定時器沒有被清除掉。另外,盡量避免使用函數(shù),從而避免可能導(dǎo)致的回調(diào)函數(shù)堆積現(xiàn)象。 由于 Javascript 是異步的,因此我們可以通過 setTimeout 和 setInterval 函數(shù)來指定特定時間執(zhí)行代碼。 function ...
閱讀 1207·2021-11-24 11:16
閱讀 3437·2021-11-15 11:38
閱讀 1937·2021-10-20 13:47
閱讀 553·2021-09-29 09:35
閱讀 2202·2021-09-22 15:17
閱讀 1017·2021-09-07 09:59
閱讀 3390·2019-08-30 13:21
閱讀 2912·2019-08-30 12:47