Promise知识点总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise知识点总结相关的知识,希望对你有一定的参考价值。
参考技术A promise 是 es6 的特性,现代主流浏览器基本上都已经支持,可以放心使用了。promise 对象代表一个异步操作,具有3中状态:
1、pending :初始状态。
2、resolve:操作成功的状态。
3、reject:操作失败的状态。
创建 promise 对象后,会立即执行,其状态为 pending ;执行之后只有2中结果:执行成功会变成 resolve 状态,执行失败会执行 reject 状态。
promise 的状态是无法获取的,它是内部变量。但可以在控制台的输出可以看见:
而且该状态也不需要获取,因为promise一旦建立,就会执行,而且该执行过程是不可以取消的,所以执行结果始终都会在promise.then()或者promise.catch()方法中出现。
promise 的优缺点:
优点:
1、将异步操作以同步操作的方式表达出来,避免层层嵌套回调函数
2、提供统一的操作接口,方便对异步操作的控制
缺点:
1、promise一旦建立,则不可取消
2、如果不设置回调函数,则会在promise内部抛出错误,不会反应到外部
3、当状态是pending是,无法判断当前状态(是异步刚刚开始执行还是即将完成了异步操作)
promise 的用法:
创建一个 promise 对象
例子:
promise 相关API:
1、promise.then(onFulfilled, onRejected) 或者 promise.then(onFulfilled).catch(onRejected) 这两个写法是等价的,都是执行promise执行成功和失败的处理
2、promise.then、promise.catch、promise.finally 的链式操作
promise.prototype.then 方法返回的是一个新的 Promise 对象,因此可以采用链式写法。
例子:
3、promise.all(iterable)
这个方法返回一个新的promise对象,该promise对象在iterable参数对象里所有的promise对象都成功的时候才会触发成功,一旦有任何一个iterable里面的promise对象失败则立即触发该promise对象的失败。
4、promise.allSettled(iterable)
等到所有promises都已敲定(settled)(每个promise都已兑现(fulfilled)或已拒绝(rejected))。
返回一个promise,该promise在所有promise完成后完成。并带有一个对象数组,每个对象对应每个promise的结果。
5、promise.any(iterable)
接收一个Promise对象的集合,当其中的一个 promise 成功,就返回那个成功的promise的值。
6、promise.race(iterable)
当iterable参数里的任意一个子promise被成功或失败后,父promise马上也会用子promise的成功返回值或失败详情作为参数调用父promise绑定的相应句柄,并返回该promise对象。
7、promise.resolve(value)
返回一个状态由给定value决定的Promise对象。
例如:
8、promise.reject(reason)
返回一个状态为失败的Promise对象,并将给定的失败信息传递给对应的处理方法
例子:
以上是关于Promise知识点总结的主要内容,如果未能解决你的问题,请参考以下文章