事件循環(huán)(the Event Loop)、宏任務(macrotask)、微任務(microtask)

開篇

我們都知道JavaScript是單線程的語言,它不像大多數語言可以開啟多線程,當處理一些阻塞并且很慢的操作時,它可以通過多線程使操作變成異步(例如讀取文件等IO操作)。其實JavaScript也有同步異步的區(qū)分。首先來看一下同步與異步的區(qū)別

// 同步
alert('阻塞中...')
console.log('待執(zhí)行')

// 異步
setTimeout(() => {
    alert('阻塞中...')
}, 1000)
console.log('待執(zhí)行')
image
image

從上面?zhèn)z張圖可以看到區(qū)別,alert()同步會阻塞應用,導致下面代碼只好等待其完成,而setTimeout異步則不需要等待,log可以先執(zhí)行。那剛才說JavaScript沒有多線程,它又是如何實現異步操作的呢,這里就要說到事件循環(huán)啦。

正題

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容