Что выведет код Junior Dart: Future, Stream, изоляты спрашивают часто обновлено

Dart: синхронный код, микрозадачи, события

Вопрос

Что выведет программа? По строке на каждый вывод.

import 'dart:async';


void main() {
  print('1');
  Future(() => print('2'));
  scheduleMicrotask(() => print('3'));
  Future.value(4).then(print);
  print('5');
}

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

Напишите, что выведет код: каждый вывод с новой строки.

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

Коротко

Код выведет: 1, 5, 3, 4, 2. Синхронно 1 и 5.

Что выведет

1
5
3
4
2

Разбор

Синхронно 1 и 5. Затем микрозадачи в порядке постановки: scheduleMicrotask поставлен раньше, чем завершится Future.value(4), поэтому 3, затем 4. Future(() => ...) это событие (таймер с нулевой задержкой), оно последнее.

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

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