ES6中的Promise对象

Promise机制作为异步编程解决方案,提供了一种处理异步操作的方式。它是一个容器,存放着某个未来事件的结果,通过resolve和reject函数处理异步操作的成功与失败。Promise对象允许使用.then和.catch方法来指定异步操作完成后的回调函数,简化了回调地狱问题。Promise.resolve和Promise.reject方法分别用于创建已解决和已拒绝的Promise实例,而Promise.all和Promise.race则用于处理多个Promise实例的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Promise 承诺机制

  1. 是一个容器,存放着某个未来才会结束的事件结果(通常是一个异步操作)
  2. 是一个对象,可以获取到异步操作的消息。

参数是一个异步处理函数,如果异步执行成功,调用resolve函数,如果异步执行失败,调用reject函数
let p = new Promise((resolve,reject)=>{//异步操作});
内部异步执行成功的回调函数
p.then((response)=>{});
内部异步执行失败的回调函数
p.catch((error)=>{});
Promise.prototype.catch方法是.then(null, rejection)的别名,用于指定发生错误时的回调函数

有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。


Promise.resolve() 方法

将现有对象转化为Promise对象,并且Promise对象的状态为Resolved状态
let p1 = Promise.resolve(p);

  • 参数p的类型:
  1. 参数是一个Promise实例
    不做任何修改,原封不动的返回这个实例
  2. 参数是一个thenable对象
    thenable对象指的是具有then方法的对象
    将这个对象转化为Promise对象,并且立即执行对象中的then方法
  3. 参数是一个非thenable对象
    返回一个新的Promise对象,状态为resolved
  4. 不带参数
    直接返回一个Resolved状态的Promise对象。

Promise.reject() 方法

返回一个新的Promise对象,状态为rejected


finally() 方法

用于指定不管Promise对象最后状态如何,都会执行的操作。接受一个回调函数,不管怎样都会执行。


Promise.all() 方法

用于将多个 Promise 实例,包装成一个新的 Promise 实例。
let p = Promise.all([p1,p2,p3]);
p的参数由p1,p2,p3决定,分为两种情况:

  1. 三个状态都为resolved时,p的状态才为resolved,返回的是由p1,p2,p3返回值组成的数组
  2. 三个中有一个状态为rejected,p的状态就为rejected,返回第一个被reject的实例的返回值

Promise.race() 方法

用于将多个 Promise 实例,包装成一个新的 Promise 实例。
let p = Promise.race([p1,p2,p3]);
只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。
p的返回值中放的是率先改变状态的Promise实例的返回值


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值