JavaScript 是单线程语言,同一时间只能执行一个任务,而异步操作是其处理耗时任务(如网络请求、定时器、文件读写、DOM 事件监听)的核心手段,目的是避免耗时任务阻塞主线程(如页面渲染、用户交互)
Promise 三大核心特性
状态不可逆:Promise 仅有pending(进行中)、fulfilled(成功)、rejected(失败)三种状态,初始为pending,仅能从pending转为fulfilled或pending转为rejected,状态一旦改变便永久凝固,无法再次修改。
链式调用:then()方法会返回一个新的 Promise 实例,支持连续调用then(),后续then()会接收前一个then()的返回值,实现异步操作的有序执行。
错误冒泡:catch()方法可以捕获整个 Promise 链式调用中任意一个环节抛出的错误,实现错误的统一处理,无需在每个异步操作后单独捕获错误。
sync/await 核心特性
async关键字:用于标记函数,标记后的函数会自动返回一个 Promise 实例,函数内部的返回值会作为 Promise 成功的结果,抛出的错误会作为 Promise 失败的原因。
await关键字:只能在async函数内部使用,用于等待 Promise 实例状态改变,会暂停当前async函数的执行(不会阻塞主线程),直到 Promise 返回结果,成功则返回resolve的值,失败则抛出错误需用try/catch捕获。
简洁性:相比 Promise 的链式调用,async/await 无需嵌套then(),代码结构更扁平,调试时可以像同步代码一样打断点,排查问题更便捷。

