РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dtTsTmClL4 128 of 128 menu

Задачи на async в Dart. Часть 4

Скомбинируйте Future и Stream: дождитесь Future<List<int>> со списком чисел, затем создайте из него Stream.fromIterable и выведите квадраты чисел через await for.

Сделайте async-функцию Future<String> readTextFile(String path), которая читает файл через File(path).readAsString() из dart:io. Обработайте ошибку, если файла нет.

import 'dart:io'; // подготовьте тестовый файл, например 'data.txt'

Сделайте async-функцию с параллельными запросами через Future.wait: запустите три Future.delayed с разными задержками и выведите все результаты списком.

Обработайте несколько ошибок в async-коде: в Future.wait передайте futures, часть из которых падает. Используйте eagerError: false и/или .catchError, чтобы собрать и успешные, и ошибочные результаты.

Используйте Isolate.run (или Isolate.spawn) для фонового вычисления: посчитайте сумму чисел от 1 до 1000000 в изоляте и верните результат в основной isolate.

import 'dart:isolate';

Сравните Isolate и async/await: напишите два варианта тяжёлого цикла (в изоляте и в обычной async-функции) и кратко опишите, почему изолят не блокирует event loop, а долгий синхронный код в isolate главного потока — блокирует.

Сделайте простой async HTTP-запрос: через пакет http (или HttpClient из dart:io) выполните GET к публичному URL и выведите статус-код и длину тела ответа.

// пример URL: // https://jsonplaceholder.typicode.com/todos/1

Реализуйте retry-логику для Future: функция Future<T> retry<T>(Future<T> Function() action, {int times = 3}) повторяет action при ошибке до times раз с паузой Future.delayed. Проверьте на функции, которая падает первые два раза.

Комплексная async-задача: параллельно загрузите несколько «ресурсов» через Future.wait, преобразуйте успешные результаты в Stream и запишите их построчно в файл через File.writeAsString.

Итоговая задача на асинхронность в Dart: объедините async/await, Stream, обработку ошибок и тайм-аут .timeout() в одном небольшом сценарии «загрузка → обработка → сохранение».

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