Sobes.tech
Junior — Middle

Care este diferența dintre mecanismele yield și async/await în lucrul cu asincronia în programare?

sobes.tech AI

Răspuns de la AI

yield și async/await sunt mecanisme diferite pentru lucrul cu asincronia și fluxurile de date:

  • yield este utilizat în iteratori și generatoare pentru a emite valori etapizat fără a crea o listă completă imediat. Acest lucru permite crearea de secvențe leneșe.

  • async/await este o sintaxă pentru simplificarea lucrului cu operațiuni asincrone, permițând scrierea de cod care arată ca sincron, dar se execută asincron.

Exemplu de utilizare a yield în C#:

IEnumerable<int> GenerateNumbers() {
    for (int i = 0; i < 5; i++) {
        yield return i; // returnează o valoare la fiecare iterație
    }
}

Exemplu de async/await:

async Task<string> GetDataAsync() {
    await Task.Delay(1000); // întârziere asincronă
    return "Date";
}

Astfel, yield gestionează emiterea secvențială a datelor, iar async/await gestionează execuția asincronă a operațiunilor.