Promesas VII: Encadenamiento

Las funciones then() devuelven una nueva promesa, diferente de la original. Como las funciones catch en realidad son funciones then() internamente, también devuelven nuevas promesas. Entonces, si eso es cierto, podrías hacer algo como esto:

new Promise((resolve, reject) => {
    console.log("Initial");
    resolve();
})
.then(() => {
    throw new Error("Something failed");
    console.log("Do this");
})
.catch(() => {
    console.error("Do that");
})
.then(() => {
    console.log("Do this, no matter what happened before");
});

// logs
Initial
Do that
Do this, no matter what happened before

El texto "Do this" no se muestra porque el error "Something failed" provocó un rechazo.

La última llamada a then() en la función doSomething() debería registrar in my main call something, pero en su lugar registra undefined. Averigua qué está mal en el código y corrígelo. Verás dos registros in my function something; esto no es un error. Proviene de la prueba. No elimines ninguna función then() ni catch().

Notas

  • ¡No le des demasiadas vueltas!
  • Consulta la pestaña Resources si te atascas.