Uživatelské nástroje

Nástroje pro tento web


asynchronous_programming

Asynchronous Programming

Asynchronous Programming (česky asynchronní programování) je programovací technika, při které program nemusí čekat na dokončení časově náročné operace a může mezitím pokračovat ve vykonávání dalšího kódu.

Tento přístup je běžný zejména ve webových aplikacích, síťové komunikaci, práci se soubory a serverových technologiích, jako jsou JavaScript: Kompletní monografie od A do Z a Node.js.

Proč vzniklo asynchronní programování

Některé operace mohou trvat relativně dlouho:

načítání dat ze serveru, komunikace s databází, čtení a zápis souborů, síťová komunikace, stahování obsahu z internetu.

Pokud by program na dokončení těchto operací čekal, mohl by být neaktivní nebo zablokovaný.

Synchronní vs. asynchronní programování

Synchronní zpracování

Při synchronním zpracování program čeká na dokončení každého kroku.

 Krok 1 ↓ Dokončení ↓ Krok 2 ↓ Dokončení ↓ Krok 3 

Výhodou je jednoduchost, nevýhodou možné blokování programu.

Asynchronní zpracování

Při asynchronním zpracování může program pokračovat v práci, zatímco se operace provádí na pozadí.

 Spuštění operace ↓ Program pokračuje dál ↓ Operace dokončena ↓ Zpracování výsledku 

Příklad v JavaScriptu

Synchronní kód:

 console.log("První"); console.log("Druhý"); console.log("Třetí"); 

Výstup:

 První Druhý Třetí 

Asynchronní kód:

 console.log("První");
 
setTimeout(() => {
console.log("Druhý");
}, 1000);
 
console.log("Třetí");

Výstup:

 První Třetí Druhý 

Callbacky

Historicky byly asynchronní operace řešeny pomocí Callback funkcí.

 setTimeout(function() { console.log("Hotovo"); }, 1000); 

Při větším množství callbacků mohl vzniknout problém označovaný jako Callback Hell.

Promise

Modernější řešení představují promise objekty.

 fetch("/data") .then(response => response.json()) .then(data => console.log(data)); 

Promise reprezentuje hodnotu, která bude dostupná až v budoucnu.

Async/Await

Nejpřehlednější způsob zápisu asynchronního kódu nabízí konstrukce async a await.

 async function nactiData() { const response = await fetch("/data"); const data = await response.json();
console.log(data);
 
}

Kód se podobá synchronnímu zápisu, ale stále pracuje asynchronně.

Event Loop

V prostředí JavaScriptu je asynchronní programování úzce spojeno s mechanismem Event Loop.

Event Loop:

sleduje frontu událostí, zpracovává callbacky, koordinuje asynchronní operace, umožňuje efektivní využití jednoho vlákna.

Oblasti použití

Webové aplikace. REST API. Databázové operace. Streamování dat. Síťová komunikace. Mobilní aplikace. Cloudové služby. IoT systémy.

Výhody

Vyšší výkon aplikace. Lepší odezva uživatelského rozhraní. Efektivní využití systémových prostředků. Možnost současného zpracování více úloh.

Nevýhody

Složitější návrh aplikace. Náročnější ladění chyb. Obtížnější sledování toku programu. Riziko závodních podmínek (race conditions).

Související pojmy

Shrnutí

Asynchronous Programming je způsob programování, při kterém aplikace nemusí čekat na dokončení časově náročných operací. Může pokračovat ve vykonávání dalších úloh a výsledek zpracovat až ve chvíli, kdy je připraven. Díky tomu jsou moderní aplikace rychlejší, lépe reagují na uživatele a efektivněji využívají systémové prostředky.

asynchronous_programming.txt · Poslední úprava: autor: admin