Sobes.tech
Junior — Middle

Podes explicar o que é uma AsyncSequence e como ela é usada em Swift?

sobes.tech IA

Resposta da IA

AsyncSequence em Swift é um protocolo que permite trabalhar com sequências assíncronas de valores. É semelhante a uma sequência normal, mas destinado a obter elementos de forma assíncrona, por exemplo, de rede ou outras fontes onde os dados chegam com atraso.

O uso de AsyncSequence permite escrever código que percorre os elementos usando a construção for await, o que torna o fluxo de dados assíncrono fácil de ler e processar.

Exemplo de uso de 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
            // Simulação de atraso assíncrono
            try? await Task.sleep(nanoseconds: 500_000_000) // 0.5 segundos
            return current
        }
    }

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

// Uso:
Task {
    for await number in AsyncCounter(limit: 5) {
        print(number)
    }
}

Este método é útil para trabalhar com fluxos de dados que chegam com atraso, como websockets, temporizadores ou APIs assíncronas.