AsyncSequence — это асинхронный аналог стандартного протокола Sequence в Swift. Он позволяет итерировать по значениям, которые появляются со временем, а не все сразу.
SequenceSequence предоставляет значения, которые доступны сразу и итерируются синхронноAsyncSequence предоставляет значения, которые приходят асинхронно, требуя итерации с for awaitС обычным Sequence ты итерируешь через стандартный цикл for:
for item in collection { }
С AsyncSequence итерация приостанавливается на каждом шаге до тех пор, пока не будет готово следующее значение:
for await item in asyncCollection { }
Ключевое слово await сигнализирует, что цикл может приостановиться в ожидании следующего элемента.
URLSession.bytes — асинхронно стримит загруженные байтыAsyncStream — кастомный AsyncSequence, который ты можешь создать для генерации значений со временемFileHandle.bytes — читает содержимое файла как асинхронный поток байтовОба протокола требуют реализации итератора. Для AsyncSequence метод next() итератора помечен как async и может выбрасывать ошибки, если объявлен как AsyncThrowingSequence.
Метод next() итератора AsyncSequence должен быть помечен ключевым словом async, тогда как метод next() итератора стандартной Sequence синхронен.
Новый — ещё не проверен сообществом
Вы