Sobes.tech
Middle — Middle+

Cum poți folosi async/await pentru a executa solicitările în mod secvențial, cu posibilitatea de a încheia procesul după a treia solicitare, fără a aștepta a patra?

sobes.tech AI

Răspuns de la AI

Pentru a realiza solicitări secvențiale folosind async/await și pentru a avea posibilitatea de a întrerupe procesul după a treia solicitare, se poate folosi un ciclu simplu cu verificarea rezultatului sau un contor. De exemplu, în Swift:

func performRequests() async {
    for i in 1...4 {
        let result = await makeRequest(number: i)
        print("Solicitare \(i) finalizată cu rezultat: \(result)")
        if i == 3 {
            print("Oprirea procesului după a treia solicitare")
            break
        }
    }
}

func makeRequest(number: Int) async -> String {
    // Simulare a unei solicitări asincrone
    try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 secundă
    return "Răspuns \(number)"
}

În acest exemplu, solicitările sunt efectuate secvențial deoarece folosim await în interiorul ciclului. După a treia solicitare, ciclul este întrerupt cu instrucțiunea break, iar a patra solicitare nu se execută.

Astfel, async/await permite scrierea de cod asincron care arată ca unul sincron și controlează ușor logica de execuție.