js中promise的方法

js中promise的方法
最新回答
遗心遗梦遗快乐

2026-02-08 08:33:42

JavaScript 中的 Promise 对象提供了一系列方法,用于处理异步操作及其结果。以下是 Promise 的主要方法及其详细说明:

1. then() 方法
  • 语法:promise.then(onFulfilled, onRejected)
  • 功能

    添加回调函数,当 Promise 成功(已解决)时调用 onFulfilled。

    当 Promise 失败(被拒绝)时调用 onRejected。

  • 返回值:返回一个新的 Promise,其解决值为 onFulfilled 或 onRejected 的返回值。
  • 示例:const promise = new Promise((resolve) => resolve('Success'));promise.then( (result) => console.log(result), // 输出: Success (error) => console.error(error));
2. catch() 方法
  • 语法:promise.catch(onRejected)
  • 功能:仅处理被拒绝的 Promise,相当于 then(null, onRejected)。
  • 返回值:返回一个新的 Promise,其解决值取决于 onRejected 的返回值。
  • 示例:const promise = new Promise((_, reject) => reject('Error'));promise.catch((error) => console.error(error)); // 输出: Error
3. finally() 方法
  • 语法:promise.finally(onFinally)
  • 功能:无论 Promise 成功或失败,都会调用 onFinally 回调。
  • 返回值:返回一个新的 Promise,其状态与原始 Promise 一致。
  • 示例:const promise = new Promise((resolve) => resolve('Done'));promise.finally(() => console.log('Cleanup')).then((result) => console.log(result)); // 输出: Cleanup → Done
4. 静态方法:Promise.resolve() 和 Promise.reject()
  • Promise.resolve(value)

    返回一个已解决的 Promise,解决值为 value。

  • Promise.reject(reason)

    返回一个已拒绝的 Promise,拒绝原因为 reason。

  • 示例:const resolved = Promise.resolve('Resolved');resolved.then(console.log); // 输出: Resolvedconst rejected = Promise.reject('Rejected');rejected.catch(console.error); // 输出: Rejected
5. 静态方法:Promise.all()
  • 语法:Promise.all([promise1, promise2, ...])
  • 功能

    当所有输入的 Promise 都解决时,返回一个解决值为所有解决值数组的新 Promise。

    如果任一 Promise 被拒绝,则立即拒绝,返回第一个拒绝原因。

  • 示例:const promises = [Promise.resolve(1), Promise.resolve(2)];Promise.all(promises).then((results) => console.log(results)); // 输出: [1, 2]
6. 静态方法:Promise.race()
  • 语法:Promise.race([promise1, promise2, ...])
  • 功能

    当第一个 Promise 解决或拒绝时,返回一个状态与之相同的新 Promise。

  • 示例:const promise1 = new Promise((resolve) => setTimeout(() => resolve('Fast'), 100));const promise2 = new Promise((_, reject) => setTimeout(() => reject('Slow'), 200));Promise.race([promise1, promise2]).then(console.log); // 输出: Fast
总结
  • then()/catch()/finally():用于链式处理 Promise 的结果或错误。
  • resolve()/reject():快速创建已解决或已拒绝的 Promise。
  • all():等待所有 Promise 成功,适合并行异步操作。
  • race():关注第一个完成的 Promise,适用于超时或竞态场景。

这些方法共同构成了 Promise 的核心功能,使得异步代码更易读、易维护。