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