Uživatelské nástroje

Nástroje pro tento web


await

Klíčové slovo Await

Klíčové slovo `await` (z anglického počkat) je moderní programovací konstrukt, který se používá v kombinaci s asynchronními funkcemi (`async`). Jeho hlavním úkolem je zastavit provádění konkrétního asynchronního bloku kódu do chvíle, než vrátí výsledek nějaká zdlouhavá operace (např. stahování dat ze sítě, dotaz do databáze nebo čtení souboru), aniž by přitom zablokovalo celé hlavní vlákno aplikace.


Jak await funguje pod pokličkou?

V tradičním synchronním programování program čeká na dokončení operace tzv. blokujícím způsobem – procesor stojí a nic jiného nedělá. S použitím `async/await` se proces chová následovně:

Fáze Popis
1. Volání operace Asynchronní funkce narazí na klíčové slovo `await` před operací, která vrací tzv. `Promise` (nebo odpovídající budoucí hodnotu).
2. Pozastavení (Suspend) Provádění aktuální funkce je bezpečně pozastaveno a řízení se vrací nadřazenému procesu (např. event loop). Vlákno může mezitím zpracovávat jiné úkoly.
3. Obnovení (Resume) Jakmile asynchronní operace skončí a vrátí data, `await` výsledek rozbalí (vybalí z Promise) a funkce plynule pokračuje dalším řádkem.

Ukázka syntaxe v praxi

Ačkoliv je chování pod pokličkou asynchronní, díky `await` lze psát kód, který vypadá jako klasický lineární (synchronní) kód. Zde je příklad v JavaScriptu:

async function ziskejDataUzivatele() {
    try {
        // Program zde pozastaví běh, dokud fetch server neodpoví
        const odpoved = await fetch('https://api.example.com/user');
 
        // Další await pro převedení dat na JSON
        const data = await odpoved.json();
 
        console.log("Uživatel načten:", data.name);
    } chyt (chyba) {
        console.error("Chyba při stahování:", chyba);
    }
}

Klíčová pravidla pro používání await

* Vazba na Async: Klíčové slovo `await` lze použít pouze uvnitř funkce, která je předem označená klíčovým slovem `async`. * Top-level await: V některých moderních prostředích (např. v moderním JavaScriptu / ESModules nebo v C#) je povoleno použití `await` i na samotné hlavní úrovni skriptu (mimo funkce). * Zamezení callback hell: `await` elegantně nahrazuje složité řetězení callback funkcí nebo starších objektů typu Promise (`.then().catch()`), čitelnost kódu se tím výrazně zvyšuje.


Podpora v programovacích jazycích

Koncept `async/await` si získal obrovskou popularitu a dnes je standardní součástí celé řady moderních programovacích jazyků:

Jazyk Příklad implementace
JavaScript / TypeScript `const vysledek = await operace();`
C# `var vysledek = await OperaceAsync();`
Python `vysledek = await operace()`
Rust `let vysledek = operace().await;`

Tip: Vždy pamatujte na to, že `await` nezrychluje samotnou operaci (stahování dat pořád trvá např. 2 sekundy). Jeho síla spočívá v tom, že neblokuje procesor, takže aplikace může během těch 2 sekund obsluhovat tisíce dalších uživatelů nebo vykreslovat plynulou animaci v uživatelském rozhraní.
await.txt · Poslední úprava: autor: admin