Promise的状态和方法

Promise的状态

初始状态 -> pending
  初始状态可以改变
  在resolve 或者 reject 调用之前都处于这个状态
最终成功状态 -> fulfilled
  执行 resolve 函数,状态改变为 fulfilled
  执行 onFulfilled 函数
最终失败状态 -> rejected
  执行 reject 函数,状态改变为 rejected
  执行 onRejected 函数
then 方法
  then 方法为 Promise 对象注册了 onFulfilled 和 onRejected 函数
catch 方法
  catch 方法为Promise 对象注册了 onRejected 函数

Promise方法

方法解释
Promise.resolvePromise.resolve方法的话,它的作用就是将传递给它的参数填充 Fulfilled 到 Promise 对象后并返回这个 Promise 对象。
Promise.reject它的功能是调用该 Promise对象通过then指定的 onRejected函数,并讲错误(Error)对象传递给这个onRejected函数
Promise.then
Promise.then(onFulfilled, onRejected)
不管你在回调函数 onFulfilled中会返回一个什么样的值,或者不返回值,该值都会由 Promis.resolve(return 的返回值) 进行响应的包装处理。因此,最终 then的结果都是返回一个新创建的 Promise对象
Promise.catch实际上Promise.catch只是promise.then(undefined, onRejected) 方法的一个别名而已。也就是说,这个方法用来注册当Promise对象状态变为 Rejected时 的回调函数
Promise.finallypromise.finally方法的回调函数不接受任何参数,这意味着finally没有办法 知道,前面的Promise状态到底是fulfilled还是rejected 。这表明,finally方法里面的操作,应该是与Promise状态无关的,不依赖于 Promise的执行结果
Promise.allPromise.all接受一个promise对象的数组作为参数,当这个数组里的所有 Promise 对象 全部变为resolve或者reject状态的时候,它才会去调用.then方法。
传递给Promise.all的 promise并不是一个个的顺序执行的,而是同时开始、并行执行的
Promise.allSettledPromise.allSettled()的入参和Promise.all、Promise.race一样,接受一个promise 对象的数组作为参数,也是同时开始、并行执行的。但是
Promise.allSettled的返回值需要注意以下几点:
Promise.allSettled不会走进catch,当所有输入Promise都被履行或者拒绝时, statusesPromise 会解析一个具有具体完成状态的数组
{ status: ‘fulfilled’, value:value } :如果相应的promise被履行
{ status: ‘rejected’, reason: reason }:如果相应的promise被拒绝
Promise.racePromise.rece()的使用方法和 Promise.all一样,接收一个promise 对象的数组为参数,Promise.race是要有一个promise对象进入Fulfilled或者 Rejected状态的话,就会继续进行后面的处理。这里依旧有两个点要注意:
和Promise.all一样是所有数组当中的Promise同时并行的
Promise.race 在第一个Promise对象变为Fulfilled之后,并不会 取消其他promise对象的执行。
Promise.race接受的是一个Promise对象数组,但是返回的确实最先完成Fulfilled 或者最先被Rejected的一个Promise的结果
Promise.anyPromise.any的入参和Promise.all、Promise.race、Promise.allSettled一样, 接收一个promise对象的数组作为参数。只要其中有一个Promise成功执行,就会返回已经成功执行的Promise的结果
如果这个promise对象的数组中没有一个promise 可以成功执行(即所有的 promise都失败 ),就返回一个失败的promise 和AggregateError类型的实例,它是Error的一个子类,用于把单一的错误集合 在一起
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值