Что выведет код 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 ошибок.