![](/img/trans.png)
[英]Why do we need multiple "await" keywords if "await" stops execution of the asynchronous function?
[英]Why do we need to await?
以下代码取自 tokio crate教程
use tokio::io::{self, AsyncWriteExt};
use tokio::fs::File;
#[tokio::main]
async fn main() -> io::Result<()> {
let mut file = File::create("foo.txt").await?;
// Writes some prefix of the byte string, but not necessarily all of it.
let n = file.write(b"some bytes").await?;
println!("Wrote the first {} bytes of 'some bytes'.", n);
Ok(())
}
为什么我们在创建文件时需要.await
?
let mut file = File::create("foo.txt").await?;
换句话说,为什么我们需要异步创建文件? 毕竟,如果文件尚未创建,我们就无法写入文件,因此只需阻止创建就足够了。 如果它创建成功,则异步写入它,否则简单地返回一个错误。 我肯定想念一些东西。
更新:请不要试图详细解释什么是异步编程,或者.await
是做什么的。 我非常了解这些话题。 我的问题是:这个异步创建文件的例子的原因是什么?
在这个简单的例子中没有实际的理由使用.await
。 有人可能会争辩说这是一个糟糕的例子,因为它没有显示出比普通同步编程有任何性能改进。 但是,异步的实际示例通常更复杂,此示例的目的是介绍基本语法。
使用文件系统是一项异步任务。 您正在请求从独立于您的程序工作的操作系统中写入或读取。 您的程序可以在加载文件时执行其他操作。 Await 基本上告诉你的程序停止执行这个函数,直到请求的数据准备好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.