问题
如何理解JS的异步?
参考答案
JS是一门单线程
语言,因为JS是运行在浏览器的主线程
中的,而浏览器的主线程只有一个
。
而浏览器主线程是非常繁忙的,它需要承担着解析hteml、解析css、渲染页面、执行Js等任务。
如果都使用同步,那么意味着主线程将有极大的可能会被阻塞
、例如定时器。假设主线程中遇到了一个10s的定时器,那么意味着主线程将要等待这个定时器完成,也就是等待10s后,才会去执行之后的任务。而之后的任务保不准会有渲染页面的任务,那么这10s里,浏览器将可能是一片空白。也就是我们所谓的白屏卡死
。
所以浏览器采用了异步
来进行任务调度
、避免卡死。具体是将一些定时器、网络、监听事件之类的需要时间等待的任务,交给其他进程处理。也就是异步任务
。在这种异步模式下,保证了浏览器不会卡死,从而最大限度的保证了单线程的流畅运行