Что выведет код Senior Dart: Future, Stream, изоляты обновлено
Dart: Future.sync, Future.value и Future()
Вопрос
Что выведет программа? По строке на каждый вывод.
import 'dart:async';
void main() {
Future.sync(() => print('sync-колбэк'));
Future(() => print('event'));
Future.value('value').then(print);
Future.microtask(() => print('microtask'));
print('main');
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: sync-колбэк, main, value, microtask, event. Future.sync вызывает функцию сразу, синхронно, поэтому её вывод первый.
Что выведет
sync-колбэк
main
value
microtask
event
Разбор
Future.sync вызывает функцию сразу, синхронно, поэтому её вывод первый. Затем main. Микрозадачи идут в порядке постановки: завершение Future.value поставлено раньше, чем Future.microtask, поэтому value раньше microtask. Future(() => ...) это событие, оно последнее.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.