面试大纲:00
问题
什么是单线程,和异步有什么关系
- 单线程就是同时只能做一件事,两段 JS 不能同时执行
- 原因就是为了避免 DOM 渲染的冲突
- 异步是一种“无奈”、高效的解决方案,但存在一些问题
什么是 event-loop
- 事件循环/轮询,JS 实现异步的具体解决方案
- 同步代码,按顺序直接执行
- 异步函数先放在异步队列中
- 待同步函数执行完毕,轮询执行异步队列的函数
是否用过 jQuery 的 Deferred
- 可以以 jQuery1.5 对 ajax 的改变举例
- 说明如何简单的封装、使用 Deferred
- 说明 promise 和 Deferred 的区别
Promise 的基本使用和原理
- 基本语法
- 捕获异常 Error 和 Reject 都要考虑
- 多个串联 - 链式执行的好处
- Promise.all 和 Promise.race
- Promise标准 - 状态变化、then函数
介绍一下 async/await 和 Promise 的联系、区别
- 基本语法(Promise是对异步回调的封装)
- 使用了Promise,并没有和Promise冲突
- 完全是同步的写法,再也没有回调函数
- 但是它改变不了JS单线程、异步的本质
