開篇
我們都知道JavaScript是單線程的語言,它不像大多數(shù)語言可以開啟多線程琢感,當(dāng)處理一些阻塞并且很慢的操作時丢间,它可以通過多線程使操作變成異步(例如讀取文件等IO操作)。其實JavaScript也有同步異步的區(qū)分驹针。首先來看一下同步與異步的區(qū)別
// 同步
alert('阻塞中...')
console.log('待執(zhí)行')
// 異步
setTimeout(() => {
alert('阻塞中...')
}, 1000)
console.log('待執(zhí)行')
image
image
從上面?zhèn)z張圖可以看到區(qū)別烘挫,alert()
同步會阻塞應(yīng)用,導(dǎo)致下面代碼只好等待其完成柬甥,而setTimeout
異步則不需要等待饮六,log
可以先執(zhí)行。那剛才說JavaScript沒有多線程暗甥,它又是如何實現(xiàn)異步操作的呢喜滨,這里就要說到事件循環(huán)啦捉捅。