Что выведет код Middle Dart: Future, Stream, изоляты обновлено
Dart: Future.delayed(0) и микрозадачи из таймера
Вопрос
Что выведет программа? По строке на каждый вывод.
import 'dart:async';
void main() {
Future.delayed(Duration.zero, () {
print('таймер 1');
scheduleMicrotask(() => print('микро из таймера'));
});
Future(() => print('таймер 2'));
Future.microtask(() => print('микро'));
print('синхронно');
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: синхронно, микро, таймер 1, микро из таймера, таймер 2. После синхронного кода выполняется микрозадача.
Что выведет
синхронно
микро
таймер 1
микро из таймера
таймер 2
Разбор
После синхронного кода выполняется микрозадача. Таймеры с нулевой задержкой срабатывают в порядке постановки. Микрозадача, поставленная внутри первого таймера, выполняется сразу после него, до второго таймера: очередь микрозадач опустошается после каждого события.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.