setTimeout(fn,delay)
實(shí)際上定時(shí)器并不會在 delay 時(shí)間結(jié)束后立馬執(zhí)行 fn行瑞,因?yàn)槎〞r(shí)器被放置在任務(wù)隊(duì)列中质蕉,等主線程中的任務(wù)執(zhí)行完成后蔓同,JS 引擎才會在任務(wù)隊(duì)列中檢查是否可以將其提出到主線程中執(zhí)行涮拗,如果可以乾戏,才會執(zhí)行 fn函數(shù)節(jié)流:如果在定時(shí)器設(shè)置的時(shí)間段內(nèi)又觸發(fā)了fn,則會清除上一個(gè)定時(shí)器三热,重新設(shè)置一個(gè)定時(shí)器鼓择,在這個(gè)定時(shí)器結(jié)束后再執(zhí)行定時(shí)器中的函數(shù),減少函數(shù)執(zhí)行次數(shù)
var timer
function fn(){
if(timer){
clearTimeout(timer);
}
timer = setTimeout(function(){...},delay);
}