Cuando llamo a esta promesa, la salida no coincide con la secuencia de llamadas a funciones. El .then viene antes que el .catch , aunque la promesa con .then estaba siendo llamada después. ¿Cuál es la razón para eso?
const verifier = (a, b) => new Promise((resolve, reject) => (a > b ? resolve(true) : reject(false))); verifier(3, 4) .then((response) => console.log("response: ", response)) .catch((error) => console.log("error: ", error)); verifier(5, 4) .then((response) => console.log("response: ", response)) .catch((error) => console.log("error: ", error));producción
node promises.js response: true error: false Promise.resolve() .then(() => console.log('a1')) .then(() => console.log('a2')) .then(() => console.log('a3')) Promise.resolve() .then(() => console.log('b1')) .then(() => console.log('b2')) .then(() => console.log('b3'))En lugar de la salida a1, a2, a3, b1, b2, b3, verá a1, b1, a2, b2, a3, b3 por la misma razón: cada vez que devuelve una promesa, va al final del bucle de eventos. cola. Entonces podemos ver esta "carrera de promesa". Lo mismo ocurre cuando hay algunas promesas anidadas.