ES6特性 -- 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) {}
- excutor函数: 执行器 (resolve, reject) => {}
- resolve函数: 内部定义成功时我们调用的函数 value => {}
- reject函数: 内部定义失败时我们调用的函数 reason => {}
说明: excutor会在Promise内部立即同步回调,异步操作其中执行
(2). Promise.prototype.then方法: (onFulfilled, onRejected) => {}
- onFulfilled函数: 成功的回调函数 (value) => {}
- 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