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";
}