开篇
我们都知道JavaScript是单线程的语言,它不像大多数语言可以开启多线程,当处理一些阻塞并且很慢的操作时,它可以通过多线程使操作变成异步(例如读取文件等IO操作)。其实JavaScript也有同步异步的区分。首先来看一下同步与异步的区别
// 同步
alert('阻塞中...')
console.log('待执行')
// 异步
setTimeout(() => {
alert('阻塞中...')
}, 1000)
console.log('待执行')
从上面俩张图可以看到区别,alert()
同步会阻塞应用,导致下面代码只好等待其完成,而setTimeout
异步则不需要等待,log
可以先执行。那刚才说JavaScript没有多线程,它又是如何实现异步操作的呢,这里就要说到事件循环啦。