Junior — Middle
El tudnád magyarázni, hogy mi az az AsyncSequence és hogyan használják Swiftben?
sobes.tech MI
Válasz az MI-től
Swiftben az AsyncSequence egy protokoll, amely lehetővé teszi az aszinkron értéksorozatokkal való munkát. Hasonló egy szokásos Sequence-hez, de az elemek aszinkron megszerzésére készült, például hálózatból vagy más forrásokból, ahol az adatok késleltetéssel érkeznek.
Az AsyncSequence használatával kódot írhatunk, amely az for await konstrukcióval iterál az elemek között, így az aszinkron adatfolyam könnyen olvashatóvá és feldolgozhatóvá válik.
Az AsyncSequence használatának példája:
struct AsyncCounter: AsyncSequence {
typealias Element = Int
let limit: Int
struct AsyncIterator: AsyncIteratorProtocol {
var current = 0
let limit: Int
mutating func next() async -> Int? {
guard current < limit else { return nil }
current += 1
// Aszinkron késleltetés szimulációja
try? await Task.sleep(nanoseconds: 500_000_000) // 0.5 másodperc
return current
}
}
func makeAsyncIterator() -> AsyncIterator {
return AsyncIterator(current: 0, limit: limit)
}
}
// Használat:
Task {
for await number in AsyncCounter(limit: 5) {
print(number)
}
}
Ez a megközelítés hasznos azokban az esetekben, amikor késleltetéssel érkező adatfolyamokkal kell dolgozni, például websockets, időzítők vagy aszinkron API-k esetén.