let p = Promise.resolve(); p.then(() => highlight(2)) .then(() => delay(duration)) .then(() => getPath(num)) .then(() => { let pj = Promise.resolve(); for (let j = 0; j < searchPath.length; j++) { pj = pj .then(() => delay(duration)) .then(() => changeColor(searchPath[j], "red")) .then(() => { let promiseCode = Promise.resolve(); if (num < searchPath[j]) { promiseCode = promiseCode .then(() => { $("#BSTree_prev") .find("#" + searchPath[j] + "_text") .text("Go Left"); }) .then(() => highlight(7)) } else { promiseCode = promiseCode .then(() => { $("#BSTree_prev") .find("#" + searchPath[j] + "_text") .text("Go Right"); }) .then(() => highlight(12)) } }); } }) .then(() => delay(duration));En el código anterior, quiero que pj se resuelva primero y luego p (retraso) debe ejecutarse, lo que sucede es que p (retraso) comienza a ejecutarse antes de que pj se resuelva y luego pj se resuelve. ¿Qué estoy haciendo mal aquí?