Middle+
V čem spočívá rozdíl v implementaci asynchronnosti v C# a JavaScript?
sobes.tech AI
Odpověď od AI
V C# je asynchronní programování založeno na úlohách (Task), které využívají thread pool k provádění operací bez blokování hlavního vlákna. Klíčová slova async a await zjednodušují psaní asynchronního kódu tím, že umožňují pozastavit a znovu spustit provádění metody.
V JavaScriptu je asynchronita realizována pomocí událostní smyčky (Event Loop) a jednovláknového motoru. Asynchronní operace (například HTTP požadavky, časovače) jsou zařazeny do fronty a vykonávají se, když je hlavní vlákno volné. Často se používají callbacky, promises (Promise) a syntaxe async/await nad promises.
Hlavní rozdíly:
- Základ: C# - úlohy a thread pool, JavaScript - událostní smyčka a jednovláknovost.
- Paralelismus: C# může provádět operace paralelně na různých vláknech. JavaScript je v podstatě jednovláknový, paralelismus je dosažen jinak (například přes Web Workers).
- Syntaxe: Oba používají
async/await, ale mechanismy jsou odlišné.
// C# - Asynchronní metoda vracející Task
public async Task<string> GetDataAsync()
{
// Simulace asynchronní práce
await Task.Delay(1000);
return "Data z C#";
}
// JavaScript - Asynchronní funkce vracející Promise
async function getDataAsync() {
// Simulace asynchronní práce
await new Promise(resolve => setTimeout(resolve, 1000));
return "Data z JavaScript";
}