• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

102
Views
Problemas con Promise en React

Soy un principiante en React y recientemente me encontré con esta obtención de datos asincrónicos e intenté simularla usando Promise en el siguiente código. (La obtención de datos lleva tiempo, así que sí, debería usar setTimeout() con Promise, pero el código aquí es para simplificar)

 function List({stories}) { console.log("Hi from List"); //Testing if component is rendered return(<> { stories.map(function(element) { return (<li>{element.title}</li>); }) } </>); }
 function App() { const stories=[ {title:"Alice in Wonderland"}, {title:"Beauty & the Beast"} ]; const [newStories,setNewStories]=React.useState([]); function wait() { console.log("Check"); //To see if code works here Promise.resolve({data:stories}); } React.useEffect(function() { wait().then(result=>setNewStories(result.data)) },[]); return( <> <h1>{"Titles"}</h1> <hr/> <List stories={newStories}/> <hr/> </> ); }

El código anterior produce la salida deseada (solo durante medio segundo más o menos) y luego procede inmediatamente a dar una pantalla en blanco en blanco, pero cuando reemplazo lo siguiente, funciona perfectamente.

 React.useEffect(function() { Promise.resolve({data:stories}).then(result=>setNewStories(result.data)) },[]);

Mi pregunta es ¿por qué no funciona cuando Promise está dentro de una función y por qué aparece este "Error de tipo no detectado" para wait() ?

(El código imprime "Comprobar" en la consola, entonces, ¿por qué de repente afirma que la función no está definida?)

EDITAR Aparentemente tengo que poner una declaración de devolución allí

Gracias @Andy y otros

over 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

🎨 Estilo JavaScript

Primero, déjame mostrarte una guía de estilo para escribir mejor JavaScript: https://github.com/airbnb/javascript

Escribir un buen código JavaScript es esencial para que su código sea legible, no solo para usted sino para todos en StackOverflow y las personas con las que trabaja.

  • Las llaves no deben estar en su propia línea nueva
  • Deben usarse espacios en lugar de caracteres de tabulación.
  • Sangre las cosas correctamente (usando 2 o 4 espacios)
  • JSX debe tener una estructura con sangría
  • No sangrar al azar y cuando lo desee, solo cuando lo espere y siempre cuando lo espere.
  • Los comentarios al final de la línea deben aparecer a solo 1 espacio del código

👷‍♀️ Promesas

Las promesas están pensadas para la resolución asincrónica, por ejemplo, si está esperando un evento, como una solicitud de red para volver con una respuesta. Esto se debe a que al crear una solicitud de red, se activa un nuevo hilo para que el resto de su código JavaScript pueda ejecutarse en lugar de esperar la respuesta.

Las promesas no deben usarse cuando simplemente se devuelve un valor.

 // ✅ Good code function wait() { return something } // 💩 Bad code function wait() { // (This is the correct way to write a Promise resolution) return new Promise(resolve => resolve(something)); }

Además, si desea escribir una función asíncrona que devuelva una promesa, pero en realidad no está creando nuevos hilos, debe usar async / await :

 async function wait() { return something; }

✅ Tu Solución

La respuesta a su solución es simple. Su función de wait no devuelve nada. Simplemente crear una promesa no hará nada, tienes que devolverla.

 function wait() { return Promise.resolve(something); }
over 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Show me some job opportunities
There's an error!