JavaScript Promise 解释:面向初学者的创业类比

发布: (2026年3月1日 GMT+8 18:41)
5 分钟阅读
原文: Dev.to

I’m happy to translate the article for you, but I’ll need the actual text you’d like translated. Could you please paste the content (or the portion you want translated) here? I’ll keep the source line and all formatting exactly as you specify.

什么是 Promise

Promise 是 JavaScript 中的一个异步操作,用于表示该操作是成功还是失败。
可以把它想象成构建一个创业功能:你现在开始工作,但结果(成功或失败)会在以后出现。

异步操作 – 在后台运行的任务,允许其他代码在不等待其完成的情况下继续执行。

为什么我们需要 Promise

  • 正确处理异步任务
  • 明确管理成功或失败
  • 编写更简洁、更易读的代码
  • 使代码结构更清晰
  • 高效地与 API 和后台任务协作

Promise 的状态

有三种可能的状态:

  • Pending – 默认状态;任务已开始,但结果尚未确定。
  • Resolved – Promise 成功完成并返回结果。
  • Rejected – Promise 失败并返回错误,例如当事情未按计划进行时。

Source:

创建和处理 Promise

创建 Promise

创建一个 promise 就像启动一个新项目:你决定要构建某些东西,但还不知道结果。

const promise = new Promise((resolve, reject) => {
  // asynchronous work here
});

处理 Promise

项目启动后,你等待结果:如果成功就庆祝,如果失败就修复它。在 JavaScript 中,promise 通过 .then().catch().finally() 来处理:

const promise = new Promise((resolve, reject) => {
  // Example: resolve or reject immediately
  resolve("Promise Resolved");
  // reject("Promise Rejected");
});

promise
  .then((data) => {
    console.log(data); // runs on resolve
  })
  .catch((error) => {
    console.log(error); // runs on reject
  })
  .finally(() => {
    console.log("code ends"); // always runs
  });
  • .then() 在 promise 被 resolve 时执行。
  • .catch() 在 promise 被 reject 时执行。
  • .finally() 无论结果如何都会执行。

Source:

Promise 方法

这些静态方法直接在 Promise 类上调用。

Promise.resolve()

返回一个已经解决(已完成)的 Promise。

类比:客户立即批准你的提案。

const resolved = Promise.resolve("Already resolved");

Promise.reject()

返回一个已因错误而被拒绝的 Promise。

类比:经理立即拒绝你的请假申请。

const rejected = Promise.reject(new Error("Already rejected"));

Promise.any()

接受一个 Promise 数组,并在第一个成功的 Promise 完成时解析。如果所有 Promise 都被拒绝,则整体被拒绝。

类比:向多个投资者推介;只需要一个“是”。

Promise.any([p1, p2, p3])
  .then((value) => console.log("First fulfilled:", value))
  .catch((err) => console.log("All rejected:", err));

Promise.all()

等待所有 Promise 完成;只要有一个被拒绝,整个操作就会被拒绝。

类比:所有部门必须在发布前完成各自的工作。

Promise.all([p1, p2, p3])
  .then((values) => console.log("All fulfilled:", values))
  .catch((err) => console.log("One failed:", err));

Promise.allSettled()

等待所有 Promise 结束(无论是成功还是失败),并返回一个描述每个结果的数组。

类比:无论成功与否,你都会收到每个部门的完整报告。

Promise.allSettled([p1, p2, p3])
  .then((results) => console.log(results));

Promise.race()

返回一个 Promise,只要任意一个输入的 Promise 结束(成功或失败),就会立即结束。

类比:第一个回应的投资者决定你的方向。

Promise.race([p1, p2, p3])
  .then((value) => console.log("First settled:", value))
  .catch((err) => console.log("First rejected:", err));

Conclusion

JavaScript Promise 提供了一种结构化的方式来处理不会立即完成的任务。从创建 Promise 到使用 .then().catch().finally() 进行处理,以及使用诸如 Promise.all()Promise.any() 等静态方法,Promise 使异步代码更清晰、更易读,也更易于管理。

0 浏览
Back to Blog

相关文章

阅读更多 »

第9周:理解异步 JavaScript

Asynchronous JavaScript 第9周的内容是了解 JavaScript 如何处理异步操作:callbacks、promises、async/await 和 event loop。Ca...

‘skill-check’ JS 测验

问题 1:类型强制转换 以下代码在控制台会输出什么? javascript console.log0 == '0'; console.log0 === '0'; 答案:true,然后 false Ex...