谈谈你对Promise的理解


一、Promise是什么?

  • 理解

    •  抽象表达:

      • Promise 是一门新的技术(ES6 规范)

      • Promise 是 JS 中进行异步编程的新解决方案(备注:旧方案是单纯使用回调函数)

    •  具体表达:

      • 从语法上来说: Promise 是一个构造函数

      • 从功能上来说: promise 对象用来封装一个异步操作并可以获取其成功/失败的结果值

  • promise 的状态改变

    • pending 变为 resolved

    • pending 变为 rejected

    • 说明: 只有这 2 种, 且一个 promise 对象只能改变一次无论变为成功还是失败, 都会有一个结果数据,成功的结果数据一般称为 value, 失败的结果数据一般称为 reason。

二、Promise 构造函数的基本用法

const p = new Promise((resolve, reject) => {
       if (...) {   // succeed
             resolve(result);        
       } else {     // fails
             reject(Error(errMessage));
       }
});

p.then(value => {
  console.log(value.toString())
},reason => {
  console.log(reason)
})

三、为什么要用Promise?

  • 指定回调函数的方式更加灵活

    • 旧的: 必须在启动异步任务前指定

    • promise: 启动异步任务 => 返回 promie 对象 => 给 promise 对象绑定回调函数(甚至可以在异步任务结束后指定多个)

  • 支持链式调用, 可以解决回调地狱问题

    • 什么是回调地狱?

      • 回调函数嵌套调用, 外部回调函数异步执行的结果是嵌套的回调执行的条件,格式上不断地进行缩进。
    • 回调地狱的缺点?

      • 不便于阅读

      • 不便于异常处理

    • 解决方案?

      • promise 链式调用
    • 终极解决方案?

      • async/await

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/281178.html

(0)
上一篇 2022年8月20日 16:56
下一篇 2022年8月20日 16:56

相关推荐

发表回复

登录后才能评论