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:完成所有任务。
