Recientemente comencé a aprender JS y vi un tutorial sobre promesas, y durante un ejercicio práctico intenté escribir mi propia promesa.
function isEven(number){ return new Promise((resolve,reject)=>{ res = ""; if(isNaN(number)){ reject(); return res; } else{ if(number%2 == 0){ res= "Even"; } res = "odd"; resolve(); return res; } }) } var num = 45 let str = isEven(num).then(()=>{ console.log("succesfull"); }).catch(()=>{ console.log("NAN"); }) document.getElementById('number').innerHTML = str; y la respuesta que obtuve [object Promise] . Quiero acceder al valor str que se devuelve a través de la función isEven, por favor alguien que me ayude a entender este concepto
Su problema es que, mientras resuelve/rechaza la promesa bajo ciertas condiciones, no hay valores asociados con esa acción. Debe pasar lo que quiera para obtener esos métodos de la siguiente manera:
function isEven(number){ return new Promise((resolve,reject)=>{ res = ""; if(isNaN(number)){ reject(res) } else{ if(number%2 == 0){ res= "Even"; } res = "odd"; resolve(res) } }) } var num = 45 let str = isEven(num).then(()=>{ console.log("succesfull"); }).catch(()=>{ console.log("NAN"); }) document.getElementById('number').innerHTML = str; Si usa .then en una Promesa, asume automáticamente que dicha Promesa se resolverá, tomando ese valor resuelto como entrada para cualquier función de devolución de llamada que esté poniendo dentro