Что нужно знать про async*, yield и yield* во Flutter/Dart?

FlutterMiddle: уверенно применяет в рабочем проекте, видит риски и тестируемостьAsyncТеорияasyncasync-generatordartgeneratorsstreamyield

Что хотят услышать интервьюеры:

Коротко: async* создает Stream через асинхронный генератор, yield отправляет событие, а yield* делегирует другой поток.

Ответ:

Где применяется:

  • удобно для последовательных состояний loading/data
  • ошибки можно отдавать через stream
  • генератор должен учитывать отмену подписки

Пример:

try {
  final user = await repo.fetchUser();
}
catch (e) {
  emit(ErrorState('$e'));
}

Как отвечать на собеседовании: объясните назначение, границы применения и почему это лучше альтернативы в конкретном сценарии. Типичная ошибка: делать генератор с бесконечным циклом без задержки.

Источники

Похожие вопросы