Join
Операція об’єднання очікує, поки весь набір ф’ючерсів буде готовий, і повертає колекцію їхніх результатів. Це схоже на Promise.all
у JavaScript або asyncio.gather
у Python.
Speaker Notes
This slide should take about 4 minutes.
Скопіюйте цей приклад у ваш підготовлений src/main.rs
і запустіть його звідти.
-
Для кількох ф’ючерсів непересічних типів ви можете використовувати
std::future::join!
, але ви повинні знати, скільки ф’ючерсів у вас буде під час компіляції. Наразі це в коейтіfutures
, незабаром буде стабілізовано вstd::future
. -
Ризик
join
полягає в тому, що один із ф’ючерсів може ніколи не вирішитися, це призведе до зависання вашої програми. -
Ви також можете поєднати
join_all
зjoin!
, наприклад, щоб об’єднати всі запити до служби http, а також запит до бази даних. Спробуйте додатиtokio::time::sleep
до ф’ючерсу, використовуючиfutures::join!
. Це не тайм-аут (який вимагаєselect!
, пояснюється в наступному розділі), але демонструєjoin!
.