/* Page prose (zh-Hans) */
"WrappingUp" = "# 小结\n\n经典模型并没有坏；它只是在每一处接缝上都向你收取记账费，而本章就是要把这些反复出现的税看清楚。`async`/`await` 把*同样的*工作重写成编译器帮你写对的直线代码。进入现代模型的路上有几个习惯需要被“反学习”掉，下面的要点就是为此而设的。\n\n* 经典模型收取反复出现的税：为相互依赖的步骤而嵌套、无法用 `throws`、可能被你忘掉的回调，以及手动的主线程跳转。\n* 链式的异步调用会长成**厄运金字塔**（逻辑向右挪，错误处理散落在各个分支里），是因为每一步都*依赖*上一步，而不是因为回调本身有错。\n* `async`/`await` 把*同样的*工作重写成带有单个 `do-try-catch` 的直线代码，而且编译器会替你强制执行错误处理。\n* 现代并发的第一份礼物是**清晰与安全**，而不是纯粹的速度；而 `await` 是一个点，在那里函数可以*挂起，并让线程去做别的工作*，它不是一行会阻塞的代码。\n* 你并不会完全抛弃回调；你仍会遇到用 completion handler 的 API，并把它们包进 `await` 里。\n* 前面的三大支柱是 **`async`/`await`**、**结构化并发**（带有自动取消和错误传播的任务树），以及 **actor**（由编译器检查的 data race 安全）。\n\n---\n\n## 接下来\n\n[async/await 基础](Async%20Await%20Basics.playgroundchapter/Overview)：`async` 和 `await` 到底意味着什么、一个函数如何挂起和恢复，以及如何定义和调用你自己的异步函数。\n\n[上一页](@previous)  |  第 6 / 6 页";
