Junior — Middle
V čom spočíva rozdiel medzi mechanizmami yield a async/await pri práci s asynchrónnosťou v programovaní?
sobes.tech AI
Odpoveď od AI
yield a async/await sú rôzne mechanizmy na prácu s asynchrónnosťou a tokmi dát:
-
yield sa používa v iterátoroch a generátoroch na postupné vydávanie hodnôt bez vytvárania úplného zoznamu naraz. To umožňuje vytváranie lenivých sekvencií.
-
async/await je syntax na zjednodušenie práce s asynchrónnymi operáciami, čo umožňuje písať kód, ktorý vyzerá ako synchronný, ale beží asynchrónne.
Príklad použitia yield v C#:
IEnumerable<int> GenerateNumbers() {
for (int i = 0; i < 5; i++) {
yield return i; // vracia hodnotu pri každej iterácii
}
}
Príklad async/await:
async Task<string> GetDataAsync() {
await Task.Delay(1000); // asynchrónne oneskorenie
return "Dáta";
}
Takto yield riadi sekvenčné vydávanie dát, zatiaľ čo async/await riadi asynchrónne vykonávanie operácií.