【JavaScript】Promise

Promise是处理异步操作的对象,使用链式变成解决传统回调函数的回调地域问题

Promise的两个参数

  • resolve是将pending(进行态)转变成成功状态,给后续.then函数使用
  • reject是将pending(进行态)转变成失败状态,给后续.catch函数使用
const promise = new Promise((resolve, reject) => {
    setTimeout(() => {
        // 模拟异步操作成功
        resolve('操作成功,这是结果'); 
    }, 1000);
});

promise.then((result) => {
    console.log(result); // 输出: 操作成功,这是结果
});

实例方法

  • then():用于处理 Promise 成功的情况,也可以链式调用处理多个异步操作。
  • catch():专门用于处理 Promise 失败的情况。
  • finally():无论 Promise 的状态是成功还是失败,finally() 中的回调函数都会执行。

静态方法

  • Promise.all():用于处理多个并发请求

如果有多个异步函数都用传统await的话会打破多个异常操作的并行,所以使用Promise.all将所有的Promise.all组合起来,然后再await

async function f() {
 const promiseA = fetch("http://....")
 const promiseB = fetch("http://....")
 const [a,b] = await Promise.all([promiseA,promiseB])
}
  • Promise.race():同样用于并行处理多个 Promise,但只要有一个 Promise 率先改变状态(成功或失败),就会返回该 Promise 的结果。
  • Promise.allSettled():会并行处理多个 Promise,并在所有 Promise 都完成(无论成功还是失败)后返回一个新的 Promise,其结果是一个数组,每个元素是一个对象,包含 statusfulfilledrejected)和对应的 valuereason
  • Promise.resolve():状态改变时将结果作为参数传入
  • Promise.reject():状态改变时将结果作为参数传入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值