Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtSpAsWt 92 of 224 menu
◀ ▶

Future.wait в Dart

Когда нужны сразу несколько независимых ответов, каждую async-функцию вызывают без await - так работа стартует параллельно в смысле очереди событий. Список Future передают в Future.wait и один раз ждут весь набор.

Два числа с короткой паузой в каждой задаче удобно сложить после общего ожидания:

Future<int> left() async { await Future.delayed(Duration(milliseconds: 50)); return 3; } Future<int> right() async { await Future.delayed(Duration(milliseconds: 50)); return 4; } void main() async { var values = await Future.wait([left(), right()]); print(values[0] + values[1]); }

Пока обе функции ждут таймер, они идут одновременно. В консоли появляется 7 - сумма готовых чисел, а не время двух пауз подряд.

Тот же прием работает со строками, если каждая функция возвращает свой фрагмент:

Future<String> partA() async => "co"; Future<String> partB() async => "de"; void main() async { var parts = await Future.wait([partA(), partB()]); print(parts[0] + parts[1]); }

Запись Future.wait([one(), two()]) читается как «дождаться и one(), и two()». Порядок элементов в списке совпадает с порядком аргументов.

Параллельно получите числа 10 и 25 в двух async-функциях с короткой паузой Future.delayed в каждой. Выведите их произведение.

Две задачи возвращают строки "run" и "ner". Склейте результаты через Future.wait и напечатайте получившееся слово.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить