Карточка Middle Dart: Future, Stream, изоляты обновлено
async* и yield
Вопрос
Что делают async*, yield и yield*?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
async объявляет функцию-генератор, возвращающую Stream. yield v отдаёт событие в поток, yield other отдаёт все события другого потока. Тело начнёт выполняться только при подписке, и может приостанавливаться на await.
Ответ
async* объявляет функцию-генератор, возвращающую Stream. yield v отдаёт событие в поток, yield* other отдаёт все события другого потока. Тело начнёт выполняться только при подписке, и может приостанавливаться на await.
Разбор
Синхронная пара: sync* возвращает ленивый Iterable.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Dart: Future, Stream, изоляты»
- Dart: синхронная часть async-функции
- Что попадает в microtask queue
- Dart: параллельные запросы
- Dart: изолят против потока
- Порядок работы event loop в Dart
- Dart: код async-функции до await
- Dart: две async-функции с await
- Dart: синхронный код, микрозадачи, события