概念:Promise

Promise 是 JavaScript 中用于处理异步操作的对象,代表一个异步操作的最终结果(成功值或失败原因)。

解决的核心痛点:解决回调地狱(Callback Hell)问题,提供更清晰的异步代码组织方式和统一错误处理机制。


核心命题


运行机制

stateDiagram-v2
    [*] --> Pending
    Pending --> Fulfilled : resolve()
    Pending --> Rejected : reject()
    Fulfilled --> [*]
    Rejected --> [*]
graph LR
    A[创建 Promise] --> B{执行器函数}
    B -->|resolve| C[状态: fulfilled<br/>值: resolve 值]
    B -->|reject| D[状态: rejected<br/>原因: reject 原因]
    C --> E[.then 处理]
    D --> F[.catch 处理]
    E --> G[返回新 Promise]
    F --> G
    G --> H[链式调用]

关键区别

维度Promiseasync/await
语法链式.then()/.catch()同步风格的 async/await
错误处理.catch() 捕获try/catch 捕获
调试堆栈较长更清晰的堆栈
适用场景并发控制、简单异步复杂异步逻辑

应用场景

  • 适用场景
    • 并发请求:使用 Promise.all 并行执行多个异步操作
    • 链式操作:多个依赖的异步步骤按顺序执行
    • 统一错误处理:在链末统一捕获错误
  • 误用
    • 不必要的包装:同步代码包装成 Promise(性能开销)
    • 忘记 return:链式调用中忘记 return 导致逻辑错误

知识图谱


参考延伸