0Pricing
Dart Academy · Урок

Isolate.run для быстрой передачи работы

Запустите функцию вне основного изолята

«Isolate.run для быстрой передачи работы» — бесплатный урок Dart Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.

Простой способ начать

Создавать isolate вручную довольно сложно. Isolate.run — самый простой способ перенести одну тяжёлую задачу из главного isolate. 🚀

Что он делает

Isolate.run запускает новый isolate, выполняет в нём Вашу функцию, возвращает результат и завершает работу isolate.

Он возвращает Future

Поскольку работа выполняется в другом месте, Isolate.run возвращает Вам Future. Вы ожидаете его так же, как любой другой асинхронный вызов.

Future<int> sumIt() => Isolate.run(() {
  var total = 0;
  for (var i = 0; i < 1000000; i++) total += i;
  return total;
});

Ожидание результата

Вызовите его и используйте await для получения результата. Главный isolate остаётся свободным и поддерживает плавную работу интерфейса, пока выполняются вычисления.

final result = await Isolate.run(heavyTask);
print(result);

Передача функции верхнего уровня

Выполняемая задача должна быть функцией top-level или статической функцией либо простой замыкающей функцией. Это позволяет безопасно передать её в новый isolate.

Осторожно захватывайте значения

Любое значение, которое замыкающая функция captures, копируется в новый isolate. Захватываемые данные должны быть небольшими и не содержать непередаваемых объектов, например сокетов.

Передача входных данных

Нужны входные данные? Захватите их в замыкающей функции или передайте отдельно. Dart copies их, поэтому isolate работает со своей версией.

final big = await Isolate.run(() => parseJson(rawText));

Получение результатов

Всё, что возвращает Ваша функция, становится Future's value. Это значение автоматически копируется обратно в главный isolate.

Ошибки передаются вызывающему коду

Если во время работы возникает исключение, Future rejects. Оберните await в try/catch, чтобы обработать сбой непосредственно в месте вызова.

try {
  final r = await Isolate.run(risky);
} catch (e) {
  print('failed: $e');
}

Цена запуска

Каждый вызов Isolate.run запускает и завершает работу isolate. Это требует дополнительных ресурсов, поэтому такой подход оправдан для действительно тяжёлых задач, а не для мелких операций.

Когда это подходит

Обращайтесь к Isolate.run, когда у Вас есть одна объёмная, самостоятельная задача. Для постоянного двустороннего обмена сообщениями лучше подходят полноценные изоляты.

Быстрая проверка

Что возвращает Isolate.run?

Итоги

Isolate.run выносит одну ресурсоёмкую функцию, ожидает её Future, копирует результат обратно и выполняет очистку. Это самый простой путь к параллельному выполнению. ✅

Часто задаваемые вопросы

Урок «Isolate.run для быстрой передачи работы» бесплатный?

Да — полный текст урока «Isolate.run для быстрой передачи работы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.

Чему я научусь в уроке «Isolate.run для быстрой передачи работы»?

Запустите функцию вне основного изолята Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Dart Academy?

Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Isolate.run для быстрой передачи работы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Dart Academy?

Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Почему изоляты, а не потоки
  2. Isolate.run для быстрой передачи работы
  3. Создание изолятов и обмен сообщениями
  4. Ресурсоёмкие задачи без зависаний
← Назад к Dart Academy