Manejar flujos de datos asíncronos es complejo, quién no ha terminado con código como este:

checkWeather('buenos aires', (error, weather) => {
if (error) throw error;
if (weather === 'well') {
return checkFlights('buenos aires', (err, flights) => {
if (err) throw err;
buyTicket(flights[0], (e, ticket) => {
if (e) throw e;
console.log('ticket nº %d', ticket.number);
});
});
}
console.log('el clima es malo');
});

Esto se conoce como el callback hell, un código complejo y difícil de mantener, pero existe una solución, Promesas. El código anterior con promesas sería algo similar a esto:

checkWatcher('buenos aires')
.then(weather => {
if (weather === 'well') {
return checkFlights('buenos aires');
}
throw new Error('el clima es malo');
})
.then(flights => buyTicket(flights[0]))
.then(ticket => {
console.log('ticket nº %d', ticket.number);
})
.catch(error => console.error(error));

Menos líneas y mucha menos indentación en el código, pero entendamos como funciona una promesa.

Terminar de leer

--

--

Sergio Xalambrí
Sergio Xalambrí

Responses (3)