promise

promise

promise基本用法

let p  = new Promise(res=>{})
p.then()
Promise.all()
Promise.race();
Promise.resolve();
Promise.any()

只要面试官提到了promise 下面的内容全部说出来

1 promise程序执行的特点

  • 1: new Promise中的回调函数是同步执行的
  • 2: 原型方法的回调函数,都是异步执行的,属于异步消息队列中的微任务.

2 promise 有三种状态

  • pending 进行中
  • resolve / fulfilled 已接收
  • reject 已拒绝

promise api 分类

  • 原型api
  • 静态api
  • 所有的api执行后返回值都是新的promise实例; 只要是promise实例就可以使用原型方法
  • 静态方法: 只能通过Promise构造函数使用

原型方法

原型方法,通常是由promise实例对象触发的

分类:

  • then 监听promise 实例 已接受的状态
  • catch 监听promise实例 已拒绝的状态
  • finally 监听链式调用中最后一个状态

原型方法还是链式调用,原型方法的callback 是异步执行的,属于微任务

.then callback

  • 1: 触发条件 当promise状态变为fulfilled
  • 2: 形参来源resolve函数实参 或者 上一个then的 return

.catchcallback

  • 1: 触发条件 当promise状态变为reject
  • 2: 形参来源resolve函数实参 或者 上一个catch的 return

静态方法

  • Promise.all()
    作用:解决同时执行多个异步任务,并发业务,等所有任务都成功后… 执行 thenCallback
    参数:数组:数组元素 promise实例对象
    返回值:新的 promise实例

    .then() 等任务中所有的promise 都是 已接受状态的时候触发。
    注意:只要有一个拒绝状态;不会触发then 触发catch

Promise.all()
参数:数组;数组元素是promise实例
返回:新的promise

.thenCallback
1: 所有promise都变为resolve
2: 形参: 数组.数组元素 resolve
  • Promise.race()监听多个promise实力状态,第一个发生状态变更的,如果是fulfilled(已接收),执行 race-then-callback 如果是reject执行race-catch-callback
    Promise.race()
    多个任务中,第一个变更状态的,
    如果是 resolve 执行 race-then-callback
    如果是 reject 执行 race-catch-callback
    注意:race只看第一个发生变更状态的
    多个任务中第一个变更状态的 如果是resolve 执行then 如果是reject 执行 catch
    多个promise实例任务中,只要有一个变为resolve执行 race-then-callback
    所有的都是reject 执行catch

  • Promise.any() 监听多个promise实力状态只要有一个变更为fulfilled (已接收)执行any-then-callback 全部reject执行 any-catch-callback

  • Promise.resolve()相当于new Promise中执行resolve

  • Promise.reject()相当于new Promise中执行reject

promise 应用

只要是异步程序都可以用promise,例如:发送网络请求
解决异步bug,—异步问题同步化
特点:

  • 优点将传统的回调函数实现异步变为.then的链式调用
  • 确定then可以一直执行,并且也也没有提高太大的代码可读性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值