Sobes.tech
Junior — Middle

Czym różnią się mechanizmy yield i async/await podczas pracy z asynchronicznością w programowaniu?

sobes.tech AI

Odpowiedź od AI

yield i async/await to różne mechanizmy do pracy z asynchronicznością i strumieniami danych:

  • yield jest używany w iteratorach i generatorach do etapowego wypisywania wartości bez tworzenia pełnej listy od razu. Pozwala to na tworzenie leniwych sekwencji.

  • async/await to składnia ułatwiająca pracę z operacjami asynchronicznymi, umożliwiająca pisanie kodu, który wygląda jak synchroniczny, ale jest wykonywany asynchronicznie.

Przykład użycia yield w C#:

IEnumerable<int> GenerateNumbers() {
    for (int i = 0; i < 5; i++) {
        yield return i; // zwraca pojedynczą wartość przy każdej iteracji
    }
}

Przykład async/await:

async Task<string> GetDataAsync() {
    await Task.Delay(1000); // asynchroniczne opóźnienie
    return "Dane";
}

W ten sposób yield zarządza sekwencyjnym wypisywaniem danych, a async/await — asynchronicznym wykonywaniem operacji.