[英]Is there a way to poll several futures simultaniously in rust async
我正在嘗試由迭代器並行執行幾個 sqlx 查詢。 這可能是我迄今為止最接近的。
let mut futures = HahshMap::new() // placeholder, filled HashMap in reality
.iter()
.map(async move |(_, item)| -> Result<(), sqlx::Error> {
let result = sqlx::query_file_as!(
// omitted
)
.fetch_one(&pool)
.await?;
channel.send(Enum::Event(result)).ignore();
Ok(())
})
.clollect();
futures::future::join_all(futures);
所有查詢和發送都是相互獨立的,因此如果其中一個失敗,其他的仍應得到處理。 此外,當前的異步關閉是不可能的。
Rust 還沒有async
閉包。 相反,您需要讓閉包返回一個異步塊:
move |(_, item)| async move { ... }
此外,請確保您.await
由join_all
返回的未來,以確保實際輪詢各個任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.