> 技术文档 > 从回调地狱到Promise乐园:JavaScript异步编程的进化

从回调地狱到Promise乐园:JavaScript异步编程的进化

前言

📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步!

🍅个人主页:南木元元


目录

什么是Promise

Promise的特点

Promise的基本用法

创建Promise对象

then

resolve/reject

catch

常用方法

Promise.all()

Promise.allSettled()

Promise.race()

Promise.any()

Promise.finally()

结语


什么是Promise

Promise是一种异步编程的解决方案,它代表一个尚未完成但预期将来会完成的操作,并可以在这个操作完成或失败时处理相应的结果。Promise 提供了一种更清晰和结构化的方式来编写和管理异步代码,避免了“回调地狱”(callback hell)的出现。

简单来说,Promise就相当于一个容器,里面保存异步操作的结果,解决了回调地狱的问题。

  • 回调地狱

Promise出现之前,JavaScript的异步机制主要通过回调函数来实现,但使用回调函数的方式有一个缺点:多个回调函数嵌套时会造成回调函数地狱,导致代码难以阅读和维护。

callback1(function(result1) { callback2(result1, function(result2) { callback3(result2, function(result3) { callback4(result3, function(result4) { // 最终结果处理 console.log(result4); }); }); });});

在上面示例中,每个异步操作的结果都被传递给下一个回调函数,随着异步操作的增加,这种嵌套会变得复杂和难以管理。

而使用 Promise 的方式可以将嵌套的回调函数作为链式调用,从而避免回调地狱。

Promise的特点

Promise实例有三种状态:

  • pending:进行中,是初始状态
  • fulfilled:已成功
  • rejected:已失败

Promise实例