Выбор ответа Middle Dart: Future, Stream, изоляты спрашивают часто обновлено

Dart: когда выносить работу в изолят

Вопрос

Экран фризит при открытии. Что из этого стоит вынести в Isolate.run или compute?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Разбор JSON на 5 МБ и сортировку 100 000 записей: это работа процессора. Изолят нужен для работы CPU: парсинг больших данных, сортировки, обработка изображений.

Варианты ответа

  1. HTTP-запрос через http.get, потому что ожидание ответа сервера блокирует кадры
  2. Разбор JSON на 5 МБ и сортировку 100 000 записей: это работа процессораправильный ответ
  3. Чтение настроек из SharedPreferences, ведь любое обращение к диску тормозит интерфейс
  4. Ожидание Future.delayed(Duration(seconds: 2)), чтобы таймер не занимал главный изолят

Разбор

Изолят нужен для работы CPU: парсинг больших данных, сортировки, обработка изображений. Сетевые запросы, чтение с диска и таймеры это ожидание, оно и так не занимает поток: Dart ждёт их асинхронно. Перенос ожидания в изолят только добавит затрат на запуск и копирование данных.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.