mirror of
https://github.com/KaiserY/trpl-zh-cn
synced 2025-05-24 02:28:07 +08:00
Merge pull request #866 from jaynnn/patch-1
Update ch17-02-concurrency-with-async.md
This commit is contained in:
commit
719cb4f190
@ -173,7 +173,7 @@ hi number 9 from the first task!
|
||||
|
||||
除了发送消息之外,我们还需要接收它们。在这个例子中我们可以手动接收,就是调用四次 `rx.recv().await`,因为我们知道进来了多少条消息。然而,在现实世界中,我们通常会等待 *未知* 数量的消息。这时我们需要一直等待直到可以确认没有更多消息了为止。
|
||||
|
||||
在示例 16-10 中,我们使用了 `for` 循坏来处理从异步信道接收的所有消息。然而,Rust 目前还没有在 *异步* 序列上编写 `for` 循环的方法。取而代之的是,我们需要一个我们还没有见过的新循环类型,即 `while let` 条件循环。`while let` 循环是我们在第六章中见过的 `if let` 结构的循环版本。只要其指定的模式持续匹配循环就会一直执行。
|
||||
在示例 16-10 中,我们使用了 `for` 循环来处理从异步信道接收的所有消息。然而,Rust 目前还没有在 *异步* 序列上编写 `for` 循环的方法。取而代之的是,我们需要一个我们还没有见过的新循环类型,即 `while let` 条件循环。`while let` 循环是我们在第六章中见过的 `if let` 结构的循环版本。只要其指定的模式持续匹配循环就会一直执行。
|
||||
|
||||
`rx.recv` 调用产生一个 `Future`,我们会 await 它。运行时会暂停 `Future` 直到它就绪。一旦消息到达,future 会解析为 `Some(message)`,每次消息到达时都会如此。。当信道关闭时,不管是否有 *任何* 消息到达,future 都会解析为 `None` 来表明没有更多的值了,我们也就应该停止轮询,也就是停止等待。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user