(1)setInterval(fn, time) -- 周期性執(zhí)行,每隔 time 時(shí)長(zhǎng)執(zhí)行一次 fn 函數(shù)
(2)setTimeout(fn, time) -- 一次性執(zhí)行,指定 time 時(shí)長(zhǎng)后執(zhí)行一次 fn 函數(shù)
(3)clearInterval(id) -- id 是 setInterval() 啟動(dòng)的計(jì)時(shí)器返回值
(4)clearTimeout(id) -- id 是 setTimeout() 啟動(dòng)的計(jì)時(shí)器返回值
注意點(diǎn):
在使用setInterval(fn, time)時(shí),頁(yè)面會(huì)先加載time時(shí)長(zhǎng),然后在顯示在頁(yè)面上;而setTimeout(fn, time)則是直接顯示在頁(yè)面上,不會(huì)出現(xiàn)先加載的情況
JavaScript 是單線(xiàn)程的應(yīng)用程序。
EventLoop 機(jī)制
異步任務(wù)、異步機(jī)制
回調(diào)函數(shù)
通過(guò)遞歸,也可以使用 setTimeout() 達(dá)到 setInterval() 周期性計(jì)時(shí)的效果
下面是兩個(gè)函數(shù)的各自用法:
(1)setInterval(fn, time)
計(jì)算當(dāng)前距離2018年10月1日的倒計(jì)時(shí)

(2)setTimeout(fn, time)
計(jì)算當(dāng)前距離2018年10月1日的倒計(jì)時(shí)

從上面可以看出,如果setTimeout()要想實(shí)現(xiàn)setInterval()的周期性效果,就需要通過(guò)遞歸,回調(diào)函數(shù)來(lái)實(shí)現(xiàn),否則setTimeout()就只能執(zhí)行一次。