微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

谈谈你对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 对象绑定回调函数(甚至可以在异步任务结束后指定多个)

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

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

      • 不便于异常处理

    • 解决方案?
    • 终极解决方案?

      • async/await

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐