Sobes.tech
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í.