Middle
Šta ste koristili pre pojave Promise?
sobes.tech АИ
Одговор од АИ
Pre nego što je pojavio Promise, callback-ovi su široko korišćeni.
Suština callback-ova:
Funkcija se prosleđuje drugoj funkciji kao argument i izvršava nakon završetka određene operacije.
Primer:
// Primer poziva asinhrone operacije sa callback-om
function fetchData(callback) {
setTimeout(() => {
const data = "Neki podaci";
callback(null, data); // Prvi argument je greška, drugi je rezultat
}, 1000);
}
fetchData((err, data) => {
if (err) {
console.error("Greška pri dobijanju podataka:", err);
} else {
console.log("Primljeni podaci:", data);
}
});
Nedostaci korišćenja samo callback-ova:
- Callback Hell (Pakao callback-ova): Lanac uvučenih asinhronih operacija vodi do veoma uvučenog i teško čitljivog koda.
- Teškoće u obradi grešaka: Potrebno je prosleđivati i proveravati greške na svakom nivou.
- Nedostatak standardizovanog pristupa: Različite biblioteke mogle su koristiti različite konvencije za callback-ove.
Alternativni pristupi pre Promise:
Pre pojave Promise, pored "čistih" callback-ova, koristile su se biblioteke i obrasci za upravljanje asinhronim operacijama, kao što su:
- Asinhrone biblioteke: Na primer,
async(za Node.js, ali i za browser). Obuhvatale su alate za upravljanje asinhronim tokovima (paralelno izvršavanje, sekvencijalno izvršavanje). - Publisher/Subscriber (Pub/Sub) obrazac: Za složenije scenarije interakcije.
- EventEmitter: U Node.js i browser okruženjima (npr.
EventEmitter).
Ipak, callback-ovi su ostali osnova za mnoge asinhrone operacije. Promise je pružio strukturiraniji, ujednačeniji i čitljiviji način rada sa asinhronošću, rešavajući mnoge probleme "Callback Hell".