promise的静态方法使用

  • promise主要是用于解决异步操作,promise有三个状态,等待、成功、失败,状态一旦改变就不能在修改。promise实际上是一个构造函数,具有all,reject,resolve等方法,原型上有then,catch等方法。构造函数本身是同步执行的,promise.then()这些异步执行的。

    • Promise构造函数的静态方法

       let fn = function(a){
          return new Promise((resolve, reject) => {
              if(a > 5){
                  resolve('大于5')
              } else {
                  reject('小于等于5')
              }
          })
      }
      let f1 = fn(8)
      let f2 = fn(4)
      let f3 = fn(6)
      let f4 = fn(5)
      
      /*
      * 接收一个 promie 对象的集合,返回一个新的 promise 对象
      **/
      // 有一个错误或者全部成功执行结束
      Promise.all([f1, f2, f3, f4]).then(res => {
          console.log(res)
      }).catch(err => {
          console.log(err) // 小于等于5
      })
      
      Promise.all([f1, f3]).then(res => {
          console.log(res)
      }).catch(err => {
          console.log(err) // ['大于5', '大于5']
      })
      
      // 只要一个成功或者全部错误执行结束
      Promise.any([f1, f2, f3, f4]).then(res => {
          console.log(res) // 大于5
      }).catch(err => {
          console.log(err) 
      })
      
      Promise.any([f2, f4]).then(res => {
          console.log(res)
      }).catch(err => {
          console.log(err) // AggregateError: All promises were rejected
      })
      
      // 不管对错全部执行完毕 返回数组 里面有各个对象对应的执行后状态
      Promise.allSettled([f1, f4]).then(res => {
          console.log(res) // [ {status: 'fulfilled', value: '大于5'},{status: 'rejected', reason: '小于等于5'}]
      }).catch(err => {
          console.log(err) 
      })
      
      // 不管对错有一个执行完毕
      Promise.race([f1, f4]).then(res => {
          console.log(res) // 大于5
      }).catch(err => {
          console.log(err) 
      })
      
      Promise.race([f2, f4]).then(res => {
          console.log(res) // 小于等于5
      }).catch(err => {
          console.log(err) 
      })
      
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值