Sobes.tech
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";
}