Конструктор microtask
Конструктор microtask класса Future планирует
выполнение переданной функции в очереди микрозадач
и возвращает объект Future. В первый параметр
мы передаем функцию, которую нужно выполнить
асинхронно. Микрозадача выполняется после завершения
текущего синхронного кода, но перед передачей
управления циклу событий. Если функция выбрасывает
исключение, возвращаемый Future завершается
с ошибкой.
Синтаксис
Future.microtask(Function computation)
Пример
Давайте запланируем микрозадачу и посмотрим, в каком порядке выполняются строки кода:
void main()
{
print('start');
Future.microtask(() {
print('microtask');
});
print('end');
}
Результат выполнения кода:
"start"
"end"
"microtask"
Как видно из результата, микрозадача выполняется
после завершения всего синхронного кода функции
main, но раньше, чем задачи из очереди событий.
Пример
Давайте получим значение из микрозадачи через
метод then:
void main()
{
Future.microtask(() {
return 'abcde';
}).then((value) {
print(value);
});
print('sync');
}
Результат выполнения кода:
"sync"
"abcde"
Пример
Давайте посмотрим, как обрабатывается ошибка, выброшенная внутри микрозадачи:
void main()
{
Future.microtask(() {
throw Exception('error');
}).catchError((error) {
print('caught: $error');
});
print('sync');
}
Результат выполнения кода:
"sync"
"caught: Exception: error"