Sobes.tech
Middle+

V čom je rozdiel v implementácii asynchronnosti v C# a JavaScript?

sobes.tech AI

Odpoveď od AI

V C# je asynchrónnosť založená na úlohách (Task), ktoré využívajú vláknový pool na vykonávanie operácií bez blokovania hlavného vlákna. Kľúčové slová async a await zjednodušujú písanie asynchrónneho kódu tým, že umožňujú pozastaviť a pokračovať vo vykonávaní metódy.

V JavaScripte je asynchrónnosť realizovaná cez Event Loop a jednofilový motor. Asynchrónne operácie (napríklad HTTP požiadavky, časovače) sa kladú do fronty a vykonávajú sa, keď je hlavné vlákno voľné. Často sa používajú callbacky, promises (Promise) a syntax async/await nad promises.

Hlavné rozdiely:

  • Základ: C# - úlohy a vláknový pool, JavaScript - event loop a jednofilovosť.
  • Paralelizmus: C# môže vykonávať operácie paralelne na rôznych vláknach. JavaScript je v podstate jednofilový, paralelizmus sa dosahuje inak (napríklad cez Web Workers).
  • Syntax: Oba používajú async/await, ale mechanizmy sú odlišné.
// C# - Asynchrónna metóda, ktorá vracia Task
public async Task<string> GetDataAsync()
{
    // Simulácia asynchrónnej práce
    await Task.Delay(1000);
    return "Dáta z C#";
}
// JavaScript - Asynchrónna funkcia, ktorá vracia Promise
async function getDataAsync() {
    // Simulácia asynchrónnej práce
    await new Promise(resolve => setTimeout(resolve, 1000));
    return "Dáta z JavaScript";
}