Выбор ответа Junior Dart: Future, Stream, изоляты спрашивают часто обновлено
Dart: microtask и event queue
Вопрос
В каком порядке event loop Dart обрабатывает очереди?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Синхронный код, затем все микрозадачи, затем одно событие, снова все микрозадачи. В изоляте две очереди.
Варианты ответа
- Синхронный код, затем все микрозадачи, затем одно событие, снова все микрозадачиправильный ответ
- Сначала все события из event queue, затем все накопившиеся микрозадачи одним пакетом
- Микрозадачи и события чередуются строго по одной, чтобы ни одна очередь не голодала
- Порядок не определён и зависит от платформы, поэтому полагаться на него нельзя
Разбор
В изоляте две очереди. Микрозадачи (scheduleMicrotask, then у завершённого Future, продолжение после await) имеют приоритет: очередь опустошается целиком перед каждым событием. События (таймеры, ввод-вывод, кадры) берутся по одному. Порядок детерминирован, на нём строятся задачи «что выведет».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.