浅聊Promise的理解以及使用

81 阅读1分钟

Promise概括

用自己的理解来说就是:从宏观上讲Promise是为了解决异步编程而出现的一个工具,从微观层面上讲Promise是一个构造函数,我们封装一个异步操作得到一个结果值。

1.ES6新增的更好的异步的变成解决方案(相对于纯回调方式)

可以异步操作启动后或完成后,再指定回调函数得到异步结果数据

image.png

解决嵌套回调地狱问题 --promise链式调用

2.Promise对象有三种状态

pending(未确定的)

resolved(成功)

rejected(失败)

3.Promise状态的2种变化

pending=>resolved

pending=>rejected

变化并不可逆!!!

4.Promise then()的理解

then()总是返回一个新的promise

新promise的结果状态由then指定的回调函数执行的结果决定

抛出错误 -- 返回失败的promise -- 返回成功的promise -- 返回其他任何值

image.png

5.Promise all()的理解
  • 批量/一次性发送多个异步请求

  • 当都成功时, 返回的promise才成功

  • 一旦有一个失败的, 返回的promise就失败了

image.png

6.async/await与promise的关系
  • async/await是消灭异步回调的终极武器

  • 作用: 简化promise对象的使用, 不用再使用then/catch来指定回调函数

  • 但和Promise并不互斥

    • 反而, 两者相辅相成
    • 执行async函数, 返回promise对象
    • await相当于promise的then
    • try...catch可捕获异常, 相当于promise的catch

image.png