promise类方法

Promise 类在 JavaScript 中提供了一些静态方法和实例方法,用于处理异步操作。以下是 Promise 类的主要方法:

1. 静态方法

Promise.all(iterable)
  • 描述: 接受一个可迭代对象(如数组),返回一个新的 Promise,该 Promise 在所有输入的 Promise 都成功时解决,或者在任何一个输入的 Promise 失败时拒绝。
  • 用法:
javascript 复制代码
const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, "foo"));
const promise3 = 42;

Promise.all([promise1, promise2, promise3])
    .then(values => {
        console.log(values); // 输出: [3, "foo", 42]
    })
    .catch(error => {
        console.error(error);
    });
Promise.allSettled(iterable)
  • 描述: 接受一个可迭代对象,返回一个新的 Promise,该 Promise 在所有输入的 Promise 都已完成(无论成功或失败)时解决,返回一个对象数组,描述每个 Promise 的结果。
  • 用法:
javascript 复制代码
const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, "foo"));
const promise3 = 42;

Promise.allSettled([promise1, promise2, promise3])
    .then(results => {
        console.log(results);
        // 输出: 
        // [
        //   { status: "fulfilled", value: 3 },
        //   { status: "rejected", reason: "foo" },
        //   { status: "fulfilled", value: 42 }
        // ]
    });
Promise.any(iterable)
  • 描述: 接受一个可迭代对象,返回一个新的 Promise,该 Promise 在第一个成功的 Promise 解决时解决,或者在所有输入的 Promise 都失败时拒绝。
  • 用法:
javascript 复制代码
const promise1 = Promise.reject("error1");
const promise2 = Promise.reject("error2");
const promise3 = Promise.resolve("success");

Promise.any([promise1, promise2, promise3])
    .then(value => {
        console.log(value); // 输出: "success"
    })
    .catch(error => {
        console.error(error);
    });
Promise.race(iterable)
  • 描述: 接受一个可迭代对象,返回一个新的 Promise,该 Promise 在第一个解决或拒绝的 Promise 解决时解决或拒绝。
  • 用法:
javascript 复制代码
const promise1 = new Promise((resolve, reject) => setTimeout(resolve, 100, "one"));
const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 200, "two"));

Promise.race([promise1, promise2])
    .then(value => {
        console.log(value); // 输出: "one"
    });

2. 实例方法

promise.then(onFulfilled, onRejected)
  • 描述: 添加成功和失败的回调函数,返回一个新的 Promise。
  • 用法:
javascript 复制代码
const promise = new Promise((resolve, reject) => {
    setTimeout(() => resolve("成功"), 1000);
});

promise.then(result => {
    console.log(result); // 输出: "成功"
}).catch(error => {
    console.error(error);
});
promise.catch(onRejected)
  • 描述: 添加一个失败的回调函数,返回一个新的 Promise。
  • 用法:
javascript 复制代码
const promise = new Promise((resolve, reject) => {
    setTimeout(() => reject("失败"), 1000);
});

promise.catch(error => {
    console.error(error); // 输出: "失败"
});
promise.finally(onFinally)
  • 描述: 添加一个最终的回调函数,无论 Promise 是成功还是失败,都会执行该回调。返回一个新的 Promise。
  • 用法:
javascript 复制代码
const promise = new Promise((resolve, reject) => {
    setTimeout(() => resolve("成功"), 1000);
});

promise
    .then(result => {
        console.log(result); // 输出: "成功"
    })
    .catch(error => {
        console.error(error);
    })
    .finally(() => {
        console.log("无论成功还是失败,这里都会执行"); // 输出: "无论成功还是失败,这里都会执行"
    });

总结

Promise 类提供了多种方法来处理异步操作,使得代码更加清晰和易于维护。通过使用这些方法,可以方便地管理多个异步操作的结果和错误处理。希望这些信息能帮助你更好地理解和使用 Promise!如果你有其他问题,请随时问我。

相关推荐
Mr Xu_4 分钟前
前端开发中CSS代码的优化与复用:从公共样式提取到CSS变量的最佳实践
前端·css
低代码布道师25 分钟前
Next.js 16 全栈实战(一):从零打造“教培管家”系统——环境与脚手架搭建
开发语言·javascript·ecmascript
鹏北海-RemHusband40 分钟前
从零到一:基于 micro-app 的企业级微前端模板完整实现指南
前端·微服务·架构
LYFlied41 分钟前
AI大时代下前端跨端解决方案的现状与演进路径
前端·人工智能
光影少年44 分钟前
AI 前端 / 高级前端
前端·人工智能·状态模式
一位搞嵌入式的 genius1 小时前
深入 JavaScript 函数式编程:从基础到实战(含面试题解析)
前端·javascript·函数式
anOnion1 小时前
构建无障碍组件之Alert Dialog Pattern
前端·html·交互设计
choke2331 小时前
[特殊字符] Python 文件与路径操作
java·前端·javascript
云飞云共享云桌面1 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
Deng9452013141 小时前
Vue + Flask 前后端分离项目实战:从零搭建一个完整博客系统
前端·vue.js·flask