更新時(shí)間:2023-05-16 來源:黑馬程序員 瀏覽量:
在前端中,setTimeout 函數(shù)是用于延遲一段時(shí)間之后執(zhí)行某個(gè)操作的。如果傳遞給setTimeout的時(shí)間參數(shù)為0,它會(huì)盡快地將函數(shù)放入任務(wù)隊(duì)列中,但是并不一定會(huì)立即執(zhí)行。這是因?yàn)镴avaScript是單線程的,它需要在執(zhí)行所有當(dāng)前正在執(zhí)行的代碼之后才能執(zhí)行任何排隊(duì)的任務(wù)。此外,瀏覽器也可能會(huì)因?yàn)槟承┰蚨舆t執(zhí)行任務(wù),比如CPU繁忙或者其他任務(wù)正在執(zhí)行。
另外,由于setTimeout函數(shù)并不是實(shí)時(shí)的,它的實(shí)際執(zhí)行時(shí)間可能會(huì)受到系統(tǒng)時(shí)間的影響,從而導(dǎo)致執(zhí)行時(shí)間與期望時(shí)間之間存在一些微小的誤差。
以下是一個(gè)簡(jiǎn)單的演示代碼,可以幫助理解 setTimeout 延遲執(zhí)行的原理和誤差:
console.log('start'); setTimeout(function(){ console.log('setTimeout'); }, 0); console.log('end');
輸出結(jié)果可能是:
start end setTimeout
從結(jié)果可以看出,setTimeout并沒有立即執(zhí)行,而是在所有同步代碼執(zhí)行完畢后才被執(zhí)行。另外,從結(jié)果的順序可以看出,setTimeout的執(zhí)行時(shí)間與預(yù)期的0毫秒有一些微小的偏差。
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開發(fā)-Python】畢業(yè)33個(gè)工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開發(fā)-Java】畢業(yè)當(dāng)天offer率91%,薪資1W+占比54.2%,班級(jí)均薪12k+
2025-09-19