JS异步
狐七 3/21/2022 js
# 1. JS 异步解决方案的发展历程以及优缺点
查看答案
# 1. 回调函数(callback)
- 优点:解决了同步的问题(只要有一个任务耗时很长,后面的任务都必须排队 等着,会拖延整个程序的执行。)
- 缺点:回调地狱,不能用 try catch 捕获错误,不能 return
# 2. Promise
- 优点:解决了回调地狱的问题
- 缺点:无法取消 Promise ,错误需要通过回调函数来捕获
# 3. Generator
- 特点:
- 不是为了解决异步而生却十分适合解决异步问题
- 需要手动执行gen.next(),可以控制函数的执行,可以配合 co 函数库使用
# 4. Async/await
- 特点:是promise和Generator的语法糖,能够自动执行生成器函数
- 优点:代码清晰,不用像 Promise 写一大堆 then 链,处理了回调地狱的问题
- 缺点:await 将异步代码改造成同步代码,如果多个异步操作没有依赖性而使 用 await 会导致性能上的降低。
# 2. Async/Await 如何通过同步的方式实现异步
查看答案
async输出的是一个 Promise 对象
# 3. promise有哪些状态?
查看答案
promise有三种状态:pending、fulfilled、rejected
# 4. promise的默认状态是什么?
查看答案
pending
# 5. promise状态的如何流转?
查看答案
只能单向的从pending到rejected或者从pending到fulfilled
# 6. promise中value成功状态值是?
查看答案
undefined,thenable,promise
# 7. promise中失败状态值是?
查看答案
reason
# 8. promise的执行器executor()的执行参数是什么?
查看答案
两个参数:resolve、reject
# 9. 介绍下 Promise.all 使用、原理实现及错误处理
查看答案
Promise.all 方法是将一个数组中的所有Promise实例执行完,如果都成功就返回结果数组,如果有一个失败就返回错误 参数:
- 接受一个数组作为参数,元素都是 Promise 实例
- 如果不是,就会先调用 Promise.resolve 方法,将参数转为 Promise 实例 返回值:
- 如果都成功,返回一个结果数组
- 如果有一个失败,返回错误
# 10. Promise.all和Promise.race的返回值是什么?
查看答案
- Promise.all 返回的是一个结果数组
- Promise.race 返回的是最快执行的结果