0Pricing
Dart Academy · Урок

Цикл событий и микрозадачи

Как Dart планирует асинхронную работу

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

Один поток, без ожидания

Dart выполняет Ваш код в одном потоке, но приложение при этом не зависает. Секрет в цикле событий, который планирует работу вместо блокировки выполнения. ⚡

Что делает цикл событий

Цикл событий работает по простому принципу: выбрать следующую ожидающую задачу, выполнить её до конца и повторить. Ваш код выполняется аккуратными непрерывными фрагментами.

Сначала синхронный код

Сначала выполняется весь обычный код сверху вниз. Только после завершения этой синхронной работы цикл начинает обрабатывать запланированные задачи.

Две очереди

Цикл извлекает задачи из двух очередей: очереди микрозадач и очереди событий. Микрозадачи всегда опережают события.

Очередь микрозадач

Микрозадача — это небольшая отложенная работа, например обратный вызов завершившегося Future. Цикл обрабатывает все микрозадачи, прежде чем обратиться к очереди событий.

Очередь событий

Очередь событий содержит более крупные задачи: таймеры, чтение файлов, нажатия и ответы сети. Они ждут, пока завершатся все микрозадачи.

Планирование микрозадачи

Передать работу в очередь микрозадач можно с помощью scheduleMicrotask. Она выполнится после текущего кода, но до любого события.

scheduleMicrotask(() => print("microtask"));
print("right now");

Планирование события

Таймер (или Future.delayed с нулевой задержкой) помещает обратный вызов в очередь событий, поэтому он выполняется после всех ожидающих микрозадач.

Timer.run(() => print("event"));
print("right now");

Микрозадачи побеждают

Если в очереди есть задачи обоих видов, первой выполняется микрозадача. Такой порядок делает цепочки Future быстрыми и предсказуемыми.

scheduleMicrotask(() => print("A"));
Timer.run(() => print("B"));
// prints A then B

Почему выполнение остаётся плавным

Поскольку каждая задача выполняется до конца, приложение никогда не обновляется наполовину. Цикл сохраняет его отзывчивость без ручного управления потоками.

Не блокируйте цикл

Переполнение очереди микрозадач может навсегда заблокировать события и заморозить ввод. Делайте микрозадачи короткими и позволяйте событиям получать время на выполнение.

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

Быстрая проверка порядка обработки очередей.

Итоги: цикл событий

Вы узнали, что цикл событий сначала выполняет синхронный код, затем обрабатывает микрозадачи и после этого — события. Благодаря такому порядку Dart остаётся однопоточным, но работает плавно. 🎉

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

Урок «Цикл событий и микрозадачи» бесплатный?

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

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

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

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

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

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

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

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

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

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

  1. Цикл событий и микрозадачи
  2. Создание и ожидание Future
  3. Обработка ошибок в асинхронном коде
  4. Future.wait и параллельная работа
← Назад к Dart Academy