Tengo una fórmula bastante fácil que no funciona dentro de Promise. El problema es el siguiente: independientemente de lo que ponga para los parámetros a y b, siempre obtengo un error, aunque claramente es más gracias a 0. Estoy bastante seguro de que me estoy perdiendo algo, pero no puedo entender qué es exactamente, porque con otra fórmula funciona (¿Quizás no puedo llamar a la función dentro de la Promesa? En ese caso, ¿cuál sería la otra manera?). Perdón por la pregunta de novato, soy nuevo en esto
const pidr = new Promise((resolve, reject) => { const result = (a, b) => (a + b) ** 2 result(5, 6) if (result > 0) { resolve() } else { reject() } }) .then(() => console.log('Success')) .catch(() => console.error('Failure'))Debe crear una variable y establecer el resultado de la ejecución de la función. Vea abajo:
const pidr = new Promise((resolve, reject) => { const result = (a, b) => (a + b) ** 2 const res = result(5, 6) if (res > 0) { resolve() } else { reject() } }) .then(() => console.log('Success')) .catch(() => console.error('Failure'))Este:
result(5, 6); llama a la función, pero no guarda el valor devuelto. Luego comparas el result (que es una función) con 0, y eso no tiene sentido.
En cambio:
const answer = result(5, 6); if (answer > 0) { resolve() } else { reject() }result es una función y no tiene que serlo, pero si quieres que sea una función, puedes llamarla dentro de tu if , así:
const pidr = new Promise((resolve, reject) => { const result = (a, b) => (a + b) ** 2 if (result(5, 6) > 0) { resolve() } else { reject() } }) .then(() => console.log('Success')) .catch(() => console.error('Failure'))