Skip to content

Promise 相关的函数

以下是整理后的 Promise 相关方法 Markdown 表格,包含传统方法和新增方法:

📊 Promise 核心方法总览

方法名类型描述参数返回值使用场景
基础方法
new Promise(executor)构造器创建 Promise 对象executor(resolve, reject) 函数Promise 实例封装异步操作
.then(onFulfilled, onRejected?)实例方法处理成功状态onFulfilled: 成功回调
onRejected: 可选失败回调
新 Promise 对象异步流程链式调用
.catch(onRejected)实例方法处理失败状态onRejected: 失败回调新 Promise 对象错误捕获
.finally(onFinally)实例方法无论成功/失败都执行onFinally: 无参数回调新 Promise 对象资源清理/日志记录
静态方法
Promise.resolve(value)静态方法创建已完成的 Promise任何类型值已完成的 Promise同步值转 Promise
Promise.reject(reason)静态方法创建已拒绝的 Promise错误原因已拒绝的 Promise快速返回错误
Promise.all(iterable)静态方法所有 Promise 成功时返回结果数组Promise 可迭代对象新 Promise 对象并行多个异步操作
Promise.allSettled(iterable)静态方法所有 Promise 完成后返回状态结果数组Promise 可迭代对象新 Promise 对象需要所有操作的最终状态
Promise.race(iterable)静态方法返回第一个完成的 PromisePromise 可迭代对象新 Promise 对象超时控制/竞速场景
Promise.any(iterable)静态方法返回第一个成功的 PromisePromise 可迭代对象新 Promise 对象获取最快成功结果
新增方法 (ES2024+)
Promise.try(func)静态方法统一包装同步/异步函数,自动捕获错误func: 要执行的函数新 Promise 对象混合任务链/错误安全封装
Promise.withResolvers()静态方法返回 { promise, resolve, reject } 对象解构对象事件驱动/外部控制状态

🔍 方法特性对比表

特性Promise.all()Promise.any()Promise.allSettled()Promise.race()
成功条件全部成功至少一个成功全部完成第一个完成
失败条件任一失败全部失败永不失败第一个失败
结果类型值数组单个值状态对象数组单个值/错误
错误处理立即拒绝AggregateError包含错误状态立即拒绝
适用场景强依赖并行操作获取最快成功收集所有操作状态竞速/超时控制

⚡ 新增方法详解

方法核心优势示例场景
Promise.try()• 统一同步/异步错误处理
• 自动捕获同步异常
Promise.try(() => JSON.parse(input)).catch(handleError)
Promise.withResolvers()• 外部控制 Promise 状态
• 避免变量污染
const {promise, resolve} = Promise.withResolvers()<br>event.on('done', resolve)

💎 使用建议

  1. 错误处理:始终使用 .catch()try/catch(async/await)处理拒绝状态
  2. 资源清理:使用 .finally() 确保资源释放
  3. 现代特性:在支持环境(Node.js 22+ / Chrome 122+)优先使用 Promise.try()Promise.withResolvers()
  4. 并发控制
    • 全成功:Promise.all()
    • 需所有结果:Promise.allSettled()
    • 最快成功:Promise.any()

完整规范参考:ECMAScript Promise