/* Page prose (zh-Hans) */
"SameJobRewritten" = "# 同样的任务，从上到下写下来\n\n现在是回报的时候。这里是同一个三步任务在现代模型里的样子。直接从上往下读：";
"SameJobRewritten-2" = "**观察运行：**同样的结果，`✅ Ready: Booklet(12 pages)`，经过同样的等待。但把两个版本并排放在一起，感受一下差别：\n\n* **它从上到下地读。**  \n没有嵌套。每一步都是普通的一行，一步的结果像普通代码那样流入下一步。金字塔消失了。\n* **错误使用 `throws` 和一个 `catch`。**  \n三条分开的 `.failure` 分支坍缩成单独一个 `do-try-catch`。*任何一步*的错误都落在同一个地方，而如果你忘了处理它，编译器会告诉你。\n* **没有丢失的回调。**  \n没有任何 completion handler 需要你去记着。每个 `await` 要么产出一个值，要么抛出；没有任何一条路径会无声地丢掉。\n* **链的中间不必再手动摆弄 `self`。**  \n而且（正如你在后面章节会看到的）还有一种语言层面的方式来表达“这属于主线程”，而不用手动在队列之间跳来跳去。\n\n真正挑大梁的那个词是 **`await`**：它标记出一个点，在那里函数可以*暂停*，直到结果就绪，然后在下一行继续，而在等待期间并不阻塞线程。这就是全部的诀窍，也是下一章的主题。\n\n* callout(试一试): 把 `renderProof` 改成 `return 24`。这条链依然是直着往下读的，而打印出的页数会更新，不需要任何别的改动：一个值进去，一个值出来。\n\n> 两个版本都做着同样真实的工作，等待着同样真实的时间。现代并发并没有让印刷厂更快；它让*协调印刷厂的那段代码*变成了你能读懂、并且编译器能帮你写对的东西。\n\n[上一页](@previous)  |  第 5 / 6 页  |  [下一页: 小结](@next)";
