1.什么是单线程,和异步的关系
(1) 单线程 - 只有一个线程,只能做一件事
(2)原因 - 避免 DOM 渲染的冲突
浏览器需要渲染 DOM
JS 可以修改 DOM 结构
JS 执行的时候,浏览器 DOM 渲染会暂停
两段 JS 也不能同时执行(都修改 DOM 就冲突了)
webworker 支持多线程,但是不能访问 DOM
(3)解决方案 - 异步
2.什么是 event-loop
实际上,主线程只会做一件事情,就是从消息队列里面取消息、执行消息,再取消息、再执行。当消息队列为空时,就会等待直到消息队列变成非空。而且主线程只有在将当前的消息执行完成后,才会去取下一个消息。这种机制就叫做事件循环机制,取一个消息并执行的过程叫做一次循环。
(1)事件轮询,JS 实现异步的具体解决方案
(2)同步代码,直接执行
(3)异步函数先放在 异步队列 中
(4)待同步函数执行完毕,轮询执行 异步队列 的函数
3.Promise 的基本使用和原理
(1)基本语法回顾
(2)异常捕获
(3)多个串联
(4)Promise.all 和 Promise.race
(5)Promise 标准
4.介绍一下 async/await
(1)then 只是将 callback 拆分了
(2)async/await 是最直接的同步写法
(3)语法