【发布时间】:2022-12-13 13:06:50
【问题描述】:
我的代码可以归结为以下内容:
let client = reqwest::Client::new();
let endpoints = vec!['http://google.com', 'http://www.yahoo.com', 'http://example.com'];
let futures: Vec<_> = endpoints.iter().map(|endpoint| {
return client
.get(endpoint)).send();
}).collect();
let (item_resolved, _remaining_futures, _last) = select_all(futures).await;
let mut responses = vec![];
for item in item_resolved {
responses.push(item.json::<ResponseStruct>().await);
}
dbg!(responses);
问题是响应只包含一个结果。我希望它是调用端点的结果。
【问题讨论】:
-
select_all()给出了第一个结果。也许你想要join_all()? -
该死!我想如果
select_ok给出第一个结果,那么select_all应该得到所有结果! -
不,
select_all()给出第一个结果,select_ok()给出第一个成功的结果。select()给出了只有两个期货的第一个结果。 -
如果你想要所有成功的结果,试试
try_join_all()。 -
我想我想要一个 join_all 但能够知道哪些端点导致了错误。
标签: rust rust-tokio rust-async-std