ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ES6特性 -- Promise特性

2022-01-31 18:00:06  阅读:158  来源: 互联网

标签:ES6 函数 -- 失败 特性 reason promise Promise 回调


一、什么是Promise

1.概念

  • 从语法上来说: Promise是一个构造函数
  • 从功能上来说: promise对象用来封装一个异步操作并可以获取其结果

2.Promise的状态改变

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

二、为什么使用Promise

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

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

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

1. 什么是回调地狱?

回调函数嵌套调用, 外部回调函数异步执行的结果是嵌套的回调执行的条件

2. 回调地狱的缺点?

不便于阅读

不便于异常处理

3. 一个不是很优秀的解决方案?

promise链式调用

4. 终极解决方案?

async/await

三、如何使用Promise?

1.API

(1). Promise构造函数: Promise (excutor) {}

  1. excutor函数: 执行器 (resolve, reject) => {}
  2. resolve函数: 内部定义成功时我们调用的函数 value => {}
  3. reject函数: 内部定义失败时我们调用的函数 reason => {}

说明: excutor会在Promise内部立即同步回调,异步操作其中执行

(2). Promise.prototype.then方法: (onFulfilled, onRejected) => {}

  1. onFulfilled函数: 成功的回调函数 (value) => {}
  2. onRejected函数: 失败的回调函数 (reason) => {}

说明: 指定用于得到成功value的成功回调和用于得到失败reason的失败回调

返回一个新的promise对象

(3). Promise.prototype.catch方法: (onRejected) => {}

onRejected函数: 失败的回调函数 (reason) => {}

说明: then()的语法糖, 相当于: then(undefined, onRejected)

(4). Promise.resolve方法: (value) => {}

value: 成功的数据或promise对象

说明: 返回一个成功/失败的promise对象

(5). Promise.reject方法: (reason) => {}

reason: 失败的原因

说明: 返回一个失败的promise对象

(6). Promise.all方法: (promises) => {}

promises: 包含n个promise的数组

说明: 返回一个新的promise, 只有所有的promise都成功才成功, 只要有一个失败了就直接失败

(7). Promise.race方法: (promises) => {}

promises: 包含n个promise的数组

说明: 返回一个新的promise, 第一个完成的promise的结果状态就是最终的结果状态

标签:ES6,函数,--,失败,特性,reason,promise,Promise,回调
来源: https://blog.csdn.net/fwk19840301/article/details/122760907

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有