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,其结果是一个数组,每个元素是一个对象,包含status(fulfilled或rejected)和对应的value或reason。 - Promise.resolve():状态改变时将结果作为参数传入
- Promise.reject():状态改变时将结果作为参数传入
1233

被折叠的 条评论
为什么被折叠?



