Назад к вопросам
Junior
148
questionbank
Как работает ключевое слово await в асинхронном программировании на Flutter?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Ключевое слово await используется в асинхронных функциях (помеченных ключевым словом async), чтобы приостановить выполнение функции до тех пор, пока Future не завершится и не вернет результат.
Принцип работы:
- Когда выполнение доходит до строки с
await, текущая функция приостанавливается. - Управление возвращается вызывающему коду (или event loop), позволяя другим частям программы выполняться. Это предотвращает блокировку UI.
- Когда
Future, на который ссылаетсяawait, завершается (то есть, выполняет свою асинхронную операцию и возвращает значение или выбрасывает исключение), выполнение приостановленной функции возобновляется с того места, где оно было прервано. - Если
Futureзавершился успешно, значение, возвращаемоеFuture, становится результатом выраженияawait. - Если
Futureзавершился с ошибкой (выбросил исключение), это исключение будет выброшено в месте вызоваawait.
Пример:
// Асинхронная функция, помеченная async
Future<String> fetchData() async {
// Имитация асинхронной операции (например, сетевого запроса)
await Future.delayed(Duration(seconds: 2));
return 'Данные из сети получены!';
}
void main() async {
print('Начало получения данных...');
// Использование await для ожидания завершения Future
try {
String data = await fetchData();
print('Получено: $data');
} catch (e) {
print('Ошибка при получении данных: $e');
}
print('Программа завершена (хотя await еще может выполняться)');
}
В этом примере main помечена как async для использования await. Вызов await fetchData() приостанавливает выполнение main на 2 секунды, не блокируя основной поток UI. Пока fetchData ожидает, другие части приложения могут работать. Как только fetchData завершится, выполнение main возобновится, и переменной data будет присвоено возвращенное значение.