JS异步

3/21/2022 js

# 1. JS 异步解决方案的发展历程以及优缺点

查看答案

# 1. 回调函数(callback)

  • 优点:解决了同步的问题(只要有一个任务耗时很长,后面的任务都必须排队 等着,会拖延整个程序的执行。)
  • 缺点:回调地狱,不能用 try catch 捕获错误,不能 return

# 2. Promise

  • 优点:解决了回调地狱的问题
  • 缺点:无法取消 Promise ,错误需要通过回调函数来捕获

# 3. Generator

  • 特点:
  1. 不是为了解决异步而生却十分适合解决异步问题
  2. 需要手动执行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 返回的是最快执行的结果
更新时间: 2022-05-13 10:02