以下代碼取自 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。我非常了解這些話題。我的問題是:這個異步創建檔案的例子的原因是什么?
uj5u.com熱心網友回復:
.await在這個簡單的例子中沒有使用的實際理由。有人可能會爭辯說這是一個糟糕的例子,因為它沒有顯示出比普通同步編程有任何性能改進。但是,異步的實際示例通常更復雜,此示例的目的是介紹基本語法。
uj5u.com熱心網友回復:
使用檔案系統是一項異步任務。您正在請求從獨立于您的程式作業的作業系統寫入或讀取。您的程式可以在加載檔案時執行其他操作。Await 基本上告訴你的程式停止執行這個函式,直到請求的資料準備好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/344610.html
上一篇:CompletableFuture.allOf()在等待完成時是否比CompletableFuture.join()回圈有任何優勢?
下一篇:為什么.then()在使用時不需要async關鍵字(類似于await)?Javascript如何知道這是一個異步操作?
