Callbackak ez dira kudea errazak programatzaile gehienek ez dituzte ondo ezagutzen eta. Callbackek etengabeko errore egiaztatzea eskatzen dute, kode korapilotsua jasanaraziz eta kodigoaren fluxuaren ulergarritasuna zailduz. BlueBird, async, eta Q bezalako promesa liburutegiek kodigo estilo estandarra RETURN eta THROW erabiliz paketatzen dute, programaren fluxua kontrolatzeko. Zehazki, kodigo nagusia funtzio bakoitzean erroreak kuadeatzetik askatzea ahalbidetzen duen try-catch errore kudeaketa estilo gogokoena onartzen dute
return aFuntzioa()
.then(bFuntzioa)
.then(cFuntzioa)
.then(dFuntzioa)
.catch((errorea) => logger.error(errorea))
.then(betiExekutatuFuntzioHau);
async function exekutatuAtazaAsinkronoBat() {
try {
const aBalioa = await aFuntzioa();
const bBalioa = await bFuntzioa(aBalioa);
const cBalioa = await cFuntzioa(bBalioa);
return await dFuntzioa(cBalioa);
} catch (errorea) {
logger.error(errorea);
} finally {
await betiExekutatuFuntzioHau();
}
}
Javascript
datuakEskuratu(parametrorenBat, function (errorea, emaitza) {
if (errorea !== null) {
// bueltatutako callback funtzioa deitzea moduko zerbait egin eta errorea pasatu
datuGehiagoEskuratu(a, function (errorea, emaitza) {
if (errorea !== null) {
// bueltatutako callback funtzioa deitzea moduko zerbait egin eta errorea pasatu
datuGehiagoEskuratu(b, function (c) {
datuGehiagoEskuratu(d, function (e) {
if (errorea !== null) {
// ulertu duzu ideia?
}
});
});
}
});
}
});
Typescript
datuakEskuratu(
parametrorenBat,
function (errorea: Error | null, aEmaitza: ResultA) {
if (errorea !== null) {
// bueltatutako callback funtzioa deitzea moduko zerbait egin eta errorea pasatu
datuGehiagoEskuratu(
aEmaitza,
function (errorea: Error | null, bEmaitza: ResultB) {
if (errorea !== null) {
// bueltatutako callback funtzioa deitzea moduko zerbait egin eta errorea pasatu
datuGehiagoEskuratu(bEmaitza, function (cEmaitza: ResultC) {
datuGehiagoEskuratu(
cEmaitza,
function (errorea: Error | null, d: ResultD) {
if (errorea !== null) {
// ulertu duzu ideia?
}
}
);
});
}
}
);
}
}
);
pouchdb.com blogetik hartua
……Izatez, callbackek zerbait oraindik maltzurragoa egiten dute: pilaz gabetzen gaituzte, programazio lengoaietan sarri egintzat jotzen duguna. Kodea pila gabe idaztea kotxe bat freno pedalik gabe gidatzea bezala da: ez zara konturatzen zein puntura arte behar duzun erabiltzen saiatu eta ez dagoela konturatzen zaren momentura arte. Promesen helburu nagusia da asinkronoa (async) erabiltzean galdutako lengoaien oinarri guztiak berreskuratzea: return, throw eta pila. Baina promesak modu egokian erabiltzen jakin beharra dago beraiei probetxua ateratzeko.
gosquared.com blogetik hartua
………Promesen metodoa askoz ere trinkoagoa, argiagoa eta idatzeko azkarragoa da. Errore edo salbuespen bat gertatzen bada, .catch() kudeatzaile bakar batek maneiatzen du.Errore guztiak kudeatzeko leku bakarra edukitzeak erroreen egiaztatzea lanaren fase bakoitzean idatzi beharrik ez dagoela adierazten du.
StrongLoop blogetik hartua
….Callbackek erroreen kudeaketa istorio kaskarra dute. Promesak hobeak dira. Promesekin, erabili Expressen errore kudeaketa kapsulatua eta horrela salbuespenen bat ez antzemateko aukerak murriztuko dituzu. Promesak jatorriz ES6ak dira, eta generatzaileekin eta ES7ren async/await bezalako proposamenekin erabil daitezke Babel bezalako konpilatzaileetan.
Benno’s blogetik hartua
……Asinkronoaren, hau da, callbacketan oinarritutako programazioaren gauza hoberenetako bat da ohituta zauden fluxu kontrol erregularren egitura guzti horiek guztiz apurtuta daudela. Hala ere, salbuespenen kudeaketa da niretzat apurtuen dagoena. Javascriptek nahiko try…catch egitura ezaguna hornitzen du. Salbuespenen arazoa da, erroreak pila batean ekiditeko aukera ona eman arren, errorea beste pila batean gertatzen bada guztiz alferrikakoak izaten bukatzen dutela…