JavaScript Promises

Promise 代表异步任务的结果。

你可以在 API 调用、数据库查询和文件读取中使用 Promise。

Promise 有三种状态:

  • Pending(进行中):任务仍在运行。
  • Fulfilled(已成功):任务成功完成。
  • Rejected(已拒绝):任务因错误而失败。

其结构如下:

const promise = new Promise((resolve, reject) => { // 执行器会立即运行 });

你可以使用以下方法处理结果:

  • .then():当 Promise 成功时运行。
  • .catch():当 Promise 失败时运行。
  • .finally():无论结果如何,任务结束时都会运行。

需要记住的重要规则:

  • 以第一个结果为准。如果你先调用 resolve() 然后调用 reject(),resolve 会胜出。
  • 执行器函数(executor function)是同步运行的。
  • 使用 async 和 await 比使用 .then() 让你的代码更易读。

处理多个 Promise:

  • Promise.all():采用“快速失败”(fail-fast)机制。如果其中一个 Promise 失败,整个组合都会失败。
  • Promise.allSettled():等待每个 Promise 完成。即使某些任务失败,它也会返回结果。

总结:

  • Promise:异步结果处理器。
  • resolve:标记成功。
  • reject:标记失败。
  • async/await:一种更简洁的编写 Promise 的方式。
  • Promise.all:遇到第一个错误时停止。
  • Promise.allSettled:完成所有任务。

来源:https://dev.to/malik786/javascript-promises-2hn4