async function setTime() { await new Promise(resolve => setTimeout(()=>{console.log("my func is fine")}, 5000)); } async function realFunction() { await setTime(); console.log("second call!"); }En el código anterior, cuando llamo a realFunction, registra que mi función está bien, pero no registra la segunda llamada. ¿Puede alguien ayudarme a entender qué estoy haciendo mal y cómo puedo hacer que se registre la declaración?
Porque nunca resuelves tu promesa. Siempre es necesario resolverlo o rechazarlo.
También async / await await es bastante inútil para setTime
function setTime(ms) { return new Promise((resolve) => setTimeout(resolve, ms)) } async function realFunction() { await setTime(5000); console.log("second call!"); }El problema es que nunca resuelves la Promise por lo que queda pendiente para siempre.
Prueba a cambiarlo así:
async function setTime() { await new Promise((resolve) => setTimeout(() => { console.log('my func is fine'); resolve(); }, 5000) ); } async function realFunction() { await setTime(); console.log('second call!'); }Necesitas resolver la promesa, y para eso puedes llamar a resolve()
Entonces su función setTime() se vería así:
async function setTime() { await new Promise(resolve => setTimeout(()=>{ console.log("my func is fine") return resolve(); }, 5000)); }