/* Page prose (zh-Hans) */
"SequenceOverTime" = "# 一个数值随时间到来的序列\n\n你已经知道普通的 `for` 循环了：\n\n```\nfor reading in [21, 22, 20] {\n    print(reading)\n}\n```\n\n那个循环在开始之前就已经握有全部元素了。一个**异步序列**是这样一种序列：当循环开始时，它的元素可能还不存在：每一个元素在就绪之前，可能都需要一次网络往返、一次计时器滴答或一次传感器采样。你用一种新的写法来遍历它，`for await`：\n\n```\nfor await reading in someAsyncSequence {\n    print(reading)\n}\n```\n\n把它读作：*“给我下一个值；如果它还没就绪，就挂起这个任务，直到它就绪，然后运行循环体。”* 你在[async/await 基础](Async%20Await%20Basics.playgroundchapter/Overview)一章里学到的关于 `await` 的一切都适用：循环可以挂起，其他工作在此期间运行，页面也保持着呼吸。唯一的新概念是，挂起发生在**每个元素一次**，而不是整个调用一次。\n\n这是你第一口具体的滋味。先别担心序列是怎么构建的；把注意力放在循环上。这个替身传感器交给你三个读数。";
"SequenceOverTime-2" = "**观察运行：**你会看到三个读数按顺序打印出来，然后是 `Done`。这个循环*自己*跑到了终点：你从没写过“停止”。异步序列会发出它自己结束的信号，一旦它这么做，`for await` 循环就完成，控制权移交到它之后的那一行。\n\n* callout(试一试): 注释掉 `continuation.finish()` 再运行一次。三个读数依然会打印，但 `Done` 永远不会。循环仍在等待下一个值。\n\n> **为什么用 Task？** 一个 Playground 页面自上而下运行，无法在顶层 `await`，所以本章里的每个 `for await` 都住在一个 `Task { }` 里。当任务迭代时，页面保持运行。这和[任务与取消](Tasks%20and%20Cancellation.playgroundchapter/Overview)一章里是同一个模式。\n\n[上一页](@previous)  |  第 2 / 7 页  |  [下一页: 用 AsyncStream 生产一个序列](@next)";
