Sobes.tech
Junior — Middle

Možete li objasniti šta je AsyncSequence i kako se koristi u Swift-u?

sobes.tech АИ

Одговор од АИ

AsyncSequence у Swift-у је протокол који омогућава рад са асинхроним низовима вредности. Он је сличан обичном низу, али је намењен за асинхроно добијање елемената, на пример, из мреже или других извора где подаци стижу са закашњењем.

Користећи AsyncSequence, можете писати код који пролази кроз елементе помоћу конструкције for await, што чини асинхрони ток података лако читљивим и обрађивим.

Пример коришћења AsyncSequence:

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
            // Симулација асинхроног закашњења
            try? await Task.sleep(nanoseconds: 500_000_000) // 0.5 секунди
            return current
        }
    }

    func makeAsyncIterator() -> AsyncIterator {
        return AsyncIterator(current: 0, limit: limit)
    }
}

// Коришћење:
Task {
    for await number in AsyncCounter(limit: 5) {
        print(number)
    }
}

Овај приступ је користан за рад са токовима података који стижу са закашњењем, као што су вебсокети, таймери или асинхроне API-ји.