前端几乎所有耗时操作——请求接口、读文件、定时器——都是异步的。理解 Promise、
async/await与事件循环的宏微任务,是写好前端代码的分水岭。
1. 为什么必须异步
JS 是单线程的:同一时刻只跑一段代码。如果请求接口是同步阻塞的,整个页面就会卡死——网络往返可能几百毫秒到几秒,期间用户点不动、界面不刷新。
所以 JS 的做法是:发请求不阻塞,先把控制权交回浏览器,拿到结果后再执行回调。这就是「非阻塞 I/O + 事件循环」。
2026/10/11大约 6 分钟
前端几乎所有耗时操作——请求接口、读文件、定时器——都是异步的。理解 Promise、
async/await与事件循环的宏微任务,是写好前端代码的分水岭。
JS 是单线程的:同一时刻只跑一段代码。如果请求接口是同步阻塞的,整个页面就会卡死——网络往返可能几百毫秒到几秒,期间用户点不动、界面不刷新。
所以 JS 的做法是:发请求不阻塞,先把控制权交回浏览器,拿到结果后再执行回调。这就是「非阻塞 I/O + 事件循环」。