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.