
前言
上一篇《JavaScript篇 13》中,我们完成了事件进阶和表单验证系统。到目前为止,我们写的所有代码都是"同步"的——一行接一行执行,上一行执行完了才执行下一行。但在真实的前端开发中,大量操作是"异步"的:从服务器获取数据、读取文件、设置定时器……这些操作不会立即完成,你需要等它们完成后再执行后续代码。
这就是异步编程要解决的问题。JS是单线程语言,如果同步地等待一个耗时操作(比如网络请求),整个页面会"卡死",用户无法进行任何操作。异步编程允许JS在等待耗时操作的同时继续处理其他任务,等操作完成了再通过机制通知代码继续执行。作为Python开发者,这个概念你应该不陌生——Python也有asyncio(异步IO)和Future(未来对象)。但JS的异步模型和Python不同,它有自己独特的演进历程:从回调函数到Promise到async/await。
本篇将系统学习JS异步编程的前两个阶段——回调和Promise。这是理解JS异步的基础,也是后续使用Fetch API(向服务器发请求)和async/await的前提。
本节核心学习内容:
- 同步 vs 异步:JS单线程模型的原理
- 回调函数处理异步:setTimeout、回调地狱
- Promise核心概念:Pending、Fulfilled、Rejected三种状态
- then/catch/finally 链式调用
- Promise.all/race/allSettled 并发控制
- Promise vs Python asyncio.Future对照
文章目录
一、同步与异步
1.1 JS的单线程模型
JavaScript是单线程语言——同一时间只能做一件事。这和Python的GIL(全局解释器锁)有相似之处(但本质不同,JS天生单线程,Python是多线程但因GIL受限)。
如果代码都是同步执行的,那一个耗时操作(比如从服务器查询100万条数据)会阻塞整个线程——在操作完成之前,页面无法响应任何用户操作,就像"死机"了一样。
1.2 同步代码 vs 异步代码
// 同步代码:顺序执行,等上一个完成后执行下一个
console.log("1. 开始");
console.log
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/zsh_1314520/article/details/165489786




