静态方法 promise

本文详细介绍了Promise的静态方法,包括Promise.resolve()和Promise.reject()的转换规则,以及Promise.all()和Promise.race()在处理并行操作时的不同行为。同时,讨论了Promise的错误处理,如catch()与then(null, fn)的区别,以及如何避免断链问题。此外,还探讨了如何处理长度未知的Promise数组,包括并行和串行执行的情况。" 126832183,9290526,使用MentoHUST在小米路由器mini上配置锐捷认证,"['网络', '路由器', '认证', '校园网', '固件']
摘要由CSDN通过智能技术生成
  1. Promise.resolve()
  • 将现有的对象转化为Promise对象;
  • 如果参数是promise实例,则直接返回这个实例;
  • 如果参数是thenabled对象,则先将其转化为promise对象,然后立即执行这个对象的then方法;
  • 如果参数是一个原始值,则返回一个promise对象,状态为resolved,这个原始值会传递给回调;
  • 没有参数,直接返回一个resolved的promise对象;
  1. Promise.reject()
  • 同上,但是返回的是rejected状态的promise对象;
  1. Promise.all()
  • 接收一个Promise实例的数组或者具有Iterator接口的对象;
  • 如果元素不是Promise对象,则使用Promise.resolve转成Promise对象;
  • 如果全部成功,状态变成resolved,返回值将组成一个数组传给回调;
  • 只要有一个失败,状态就变为rejected,返回值将直接传递给回调;
  • all()的返回值也是新的Promise对象;
  1. Promise.race()
  • 同上,区别是只要有一个Promise实例率先发生变化(无论状态变成resolved还是rejected)都将触发then中的回调,返回值将传递给回调

catch()和then(null, fn)

在有些情况下catch与then(null, fn)并不相同:

      
      
      
1
      
      
      
ajaxLoad1().then( res => { return ajaxLoad2()}).catch( err => console.log(err))

此时,catch捕获的并不是ajaxLoad1的错误,而是ajaxLoad2的错误,所以需要结合两者一起来用:

      
      
      
1
      
      
      
ajaxLoad1().then( res => { return ajaxLoad2() }, err => console.log(err)).catch( err => console.log(err))

断链

      
      
      
1
2
3
4
5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值