new Promise((resolve, reject) => { console.log("promise1") resolve() }).then(() => { console.log("then11") new Promise((resolve, reject) => { console.log("promise2") resolve() }).then(() => { console.log("then21") }).then(() => { console.log("then23") }) }).then(() => { console.log("then12") })El resultado del código anterior es el siguiente, cuando pruebo mi comprensión de la micro tarea y la tarea macro con promesa y no puedo obtener el resultado correcto.
// "promise1" // "then11" // "promise2" // "then21" // "then12" // "then23"Para ser más específico, estoy confundido acerca de las últimas 3 salidas. ¡Gracias por la ayuda!
// "then21" // "then12" // "then23"Si estás buscando esta salida:
// "promise1" // "then11" // "promise2" // "then21" // "then23" // "then12" Luego devuelva la Promesa dentro de su primer .then( , así:
new Promise((resolve, reject) => { console.log("promise1") resolve() }).then(() => { console.log("then11") return new Promise((resolve, reject) => { console.log("promise2") resolve() }).then(() => { console.log("then21") }).then(() => { console.log("then23") }) }).then(() => { console.log("then12") }) El return devuelve la Promesa hecha por el último .then( en la cadena después de su segunda new Promise . Su último .then( esperará el then23 .then( , luego se ejecutará.