gpt4 book ai didi

asynchronous - 如何等待 Rust 中的异步函数调用列表?

转载 作者:行者123 更新时间:2023-12-03 11:34:05 26 4
gpt4 key购买 nike

我有一个列表 async我想同时执行的 Rust 函数,然后等待所有这些函数完成。我现在的工作代码是

 async fn start_consumers(&self) {
for consumer in &self.consumers {
consumer.consume().await;
}
}
这不是很准确,因为函数是串行执行的。我正在寻找类似 join! 的东西,但它适用于动态向量,使用它我应该能够写出类似的东西
 async fn start_consumers(&self) {
let mut v = Vec::new();
for consumer in &self.consumers {
consumer.consume();
}
join!(v);
}
现在 join!仅支持元组。我正在为此寻找替代方案。类似于 Promise.all()在 JavaScript 中。

最佳答案

因此,经过一番搜索,我发现 rust futures 有一个名为 join_all 的函数。这允许等待 future 的集合。

 use futures::future::join_all;
....

async fn start_consumers(&self) {
let mut v = Vec::new();
for consumer in &self.consumers {
v.push(consumer.consume());
}
join_all(v).await;
}

关于asynchronous - 如何等待 Rust 中的异步函数调用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63326882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com