Middle
Co jste používali před příchodem Promise?
sobes.tech AI
Odpověď od AI
Před zavedením Promise byly callbacky široce používány.
Podstata callbacků:
Funkce je předána jiné funkci jako argument a je vykonána po dokončení určité operace.
Příklad:
// Příklad volání asynchronní operace s callbackem
function fetchData(callback) {
setTimeout(() => {
const data = "Nějaká data";
callback(null, data); // První argument je chyba, druhý je výsledek
}, 1000);
}
fetchData((err, data) => {
if (err) {
console.error("Chyba při načítání dat:", err);
} else {
console.log("Přijatá data:", data);
}
});
Nevýhody používání pouze callbacků:
- Callback Hell (peklo callbacků): Řetězec vnořených asynchronních operací vede k velmi vnořenému a těžko čitelnému kódu.
- Těžkosti s chybovou kontrolou: Je nutné předávat a kontrolovat chyby na každé úrovni vnoření.
- Chybějící standardizovaný přístup: Různé knihovny mohly používat různé konvence pro callbacky.
Alternativní přístupy před Promise:
Před zavedením Promise se kromě "čistých" callbacků používaly knihovny a vzory pro správu asynchronnosti, například:
- Asynchronní knihovny: Například
async(pro Node.js, ale i v prohlížeči). Nabízely nástroje pro správu asynchronních toků (paralelní provádění, sekvenční provádění). - Vzor Publisher/Subscriber (Pub/Sub): Pro složitější scénáře interakce.
- Emitery událostí: V Node.js a v prostředí prohlížeče (například
EventEmitter).
Nicméně callbacky zůstávaly základem pro mnoho asynchronních operací. Promise poskytly strukturovanější, sjednocenější a čitelnější způsob práce s asynchronností, čímž odstranily řadu problémů "Callback Hell".