Promise的详细总结(面试常问)

promise对象是一种一步编程的解决方案,将异步操作,以同步的流程表达出来,避免了层层嵌套的回调函数,能解决异步处理的回调地狱问题。

promise构造函数带有一个resolve(解析)和reject(拒绝)两个参数的回调。在回调中执行一些操作(例如异步),如果一切正常调用resolve()否则使用reject(),已经实例化化过的promise对象可以调用promise.then()方法接受两个参数:onResolve和onReject,分别代表当前promise对象在成功时和失败时的回调函数。

promise的基本使用

const ljh = new Promise((resove,reject)=>{
   if(...){
       resove()  // 代码正常
     }
   else{
       reject()  // 代码错误
     }
});

ljh.then((res)=>{
   //代码走了resove()执行这里
},(err)=>{
   //代码走了reject()执行这里
})

注意:除了在then里可以捕获错误时回调,还可以使用catch()。代码如下

const ljh = new Promise((resove,reject)=>{
  if(1){
      resove()  // 代码正常
    }
  else{
      reject()  // 代码错误
    }
});
ljh.then((res)=>{
  //代码走了resove()执行这里
}).catch((err)=>{
  //代码走了resove()执行这里
})

 promise的3种状态

Fulfilled为成功的状态,Rejected为失败的状态,Pending是初始状态

在Fulfilled状态下,会调用then方法,在Rejected状态下会调用catch方法

promise的其他两个方法

promise.all()

Promise.all([p1, p2, p3])用于将多个promise实例,包装成一个新的Promise实例,返回的实例就是普通的promise
它接收一个数组作为参数

当接收的全部promise状态都为Fulfilled的时候,返回的promise状态才为Fulfilled,执行then,如果有一个为Rejected,就执行catch,返回的是发生第一个Rejected的promise的结果

Promise.race()

类似于Promise.all() ,区别在于它有任意一个完成就算完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值