Necesito llamar a varias promesas dentro de un bucle for, pero me da una unhandled promise exception durante cada ejecución. La forma de solucionar esto es devolver la segunda promesa, de esta forma se ejecutaría el último catch y funcionaría sin errores, pero - la segunda y más iteraciones no se ejecutarían.
const doFirstThing = () => { return new Promise((resolve, reject) => { setTimeout(() => (resolve(['a', 'b', 'c'])), 1000); }); } const doSecondThing = () => { return new Promise((resolve, reject) => { setTimeout(() => (reject('test')), 500); // reject here }); } doFirstThing() .then(results => { results.forEach(result => { doSecondThing(result) .then(() => console.log(result, 'done')); }); }) .catch(error => console.log(error));¿Cómo puedo lidiar con esto?
Para evitar la cadena de unhandled promise exception .catch() a lat .then() ; sustituir usando Promise.all() y .map() por .forEach()
const doFirstThing = () => { return new Promise((resolve, reject) => { setTimeout(() => (resolve(['a', 'b', 'c'])), 1000); }) } const doSecondThing = (r) => { return new Promise((resolve, reject) => { setTimeout(() => (reject('test')), 500); // reject here }) } doFirstThing() .then(results => { return Promise.all(results.map(result => { return doSecondThing(result) })); }) .then((result) => console.log(result, 'done')) .catch(error => console.log(`err:${error}`));