第9周:理解异步 JavaScript
发布: (2026年3月3日 GMT+8 00:15)
3 分钟阅读
原文: Dev.to
Source: Dev.to
异步 JavaScript
第 9 周的内容是了解 JavaScript 如何处理异步操作:回调、Promise、async/await 和事件循环。
回调与事件循环
突破在于:理解 JavaScript 的调用栈如何与事件循环协同工作。JavaScript 是单线程的,但事件循环让它表现出并发的感觉。
- 学会了为什么
setTimeout并不能保证精确的时间。 - 异步操作不会阻塞执行。
- 调用栈、Web API 和回调队列协同工作。
回调地狱展示了为何需要更好的方案。嵌套三层的回调会变成难以阅读的灾难金字塔。
Promise
Promise 将回调地狱平展为可读的链式调用。
- 使用
resolve和reject创建 Promise。 - 使用
then和catch链式调用,正确处理错误。 Promise.all并行运行多个操作并等待全部完成。Promise.race返回最先完成的那个。
Async/Await
Async/await 改变了一切。相同的异步代码可以像同步代码一样编写——不再需要 then 链式调用,只需 await 结果。
- 错误处理使用
try/catch。 - 语法更简洁,易于理解。
顺序执行 vs 并行执行
- 顺序的
await一个接一个执行;三个操作总共需要三秒。 Promise.all并行执行;如果可以同时运行,三个操作总共只需一秒。
错误处理很棘手。了解何时使用 try/catch、错误何时传播以及如何正确处理失败至关重要。
关键教训
理解事件循环对后端开发至关重要。它解释了尽管 JavaScript 是单线程的,却仍能处理并发。
前进方向
- 使用 API 构建项目。
- 在真实场景中应用异步 JavaScript。
- 开始学习 Node.js 基础。
提问: 在学习 JavaScript 时,哪一点让你花了最长时间才弄懂?