【promise原理、用法、API】

promise的核心原理其实就是发布订阅模式,通过两个队列来缓存成功的回调(onResolve)和失败的回调(onReject),promise是异步编程的一种解决方案,解决多个异步方法串行的问题,比如回调地狱等问题

Promise是一个构造函数,自己身上有all、allsettled、any、race、reject、resolve这些静态方法,原型上有then、catch等方法,因此Promise new出来的对象肯定就有then、catch方法

同时发起多个请求可以使用promise.all

有三种可切换状态:pending(进行中)、resloved、rejected

promise状态只能从pending态转onfulfilled,onrejected到resolved、或者rejected

基本用法:

可以通过Promise的构造函数创建Promise对象

Promise构造函数接收一个函数作为参数,该函数的两个参数是resolvereject,其中resolve函数的作用是当Promise对象转移到成功,调用resolve并将操作结果作为其参数传递出去;reject函数的作用是单Promise对象的状态变为失败时,将操作报出的错误作为其参数传递出去

reject方法

reject的作用就是把Promise的状态从pending置为rejected,这样在then中就能捕捉到reject的回调函数

then方法

可以使用链式调用,then方法可以接受两个参数,第一个对应resolve的回调,第二个对应reject(的回调。所以我们能够分别拿到他们传过来的数据

通常使用axios在发请求的时候使用.then方法,因为axios已经封装好了promise

catch 方法

和then的第二个参数一样,用来指定reject的回调--------即便是有错误的代码也不会报错,与try/catch语句有相同的功能

all

all方法提供了并行执行异步操作的能力,在all中所有异步操作结束后才执行回调,可以用来同时发多个请求,在写商品分类的时候就有用到promise.all

race

race则不同它等到第一个Promise改变状态就开始执行回调函数。将上面的all改为race,得到

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值