Promise用法

Promise是ES6引入的一个类,用于处理异步操作,避免回调地狱。它有pending、resolve和reject三种状态,状态一旦改变就不会再变。Promise.all等待所有操作完成,所有都成功才执行回调,而Promise.race则在任一操作完成时立即执行回调。

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

在ES6中,新增了Promise这个类,Promise用于处理一些需要花费长时间的任务,进行异步处理, 一般是说解决了回调地狱的问题。因为Promise是一个类,所以需要new Promise来使用。

promise是用来处理多层嵌套的回调函数,它有三种状态:pending(进行中)、resolve(完成)、reject(失败)。
如果成功,即从pending转为resolve,此时执行reslve函数
如果失败,即从pending转为reject,此时执行reject函数。

Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。

Promise.all():等待机制

promise.all()方法会发起并行的 Promise 异步操作,等所有的异步操作全部结束后并且执行结果都是成功的时候才会执行下一步的 .then 操作。

var p = Promise.all([p1, p2, p3]);

(1)只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数。

(2)只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。

Promise.race():赛跑机制

Promise.race()方法会发起并行的 Promise 异步操作,只要任何一个异步操作完成,就立即执行下一步的 .then 操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值