Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

112
Vistas
devolver indefinido en la solicitud de búsqueda dentro del mapa reaccionar

Traté de obtener una matriz de mapas de fetch resolves, por lo que en cada elemento dentro de favoriteCards devuelve un valor y lo asigna en la prueba

 useEffect(() => { const test = favoriteCards.map((card) => { accuWeatherApi.getCurrentWeather(card.key).then((res) => { return res; }); }); setRenderFavorites(test); }, [favoriteCards]); console.log(renderFavorites)

Siempre me quedo indefinido sin importar lo que haga

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La operación getCurrentWeather es asíncrona . Entonces, en este caso, debe await una serie de operaciones para obtener sus resultados antes de poder establecer esos resultados en un valor de estado.

En un useEffect que podría verse así:

 useEffect(() => { const fetchWeather = async () => { // begin the asynchronous operations const promises = favoriteCards.map(card => accuWeatherApi.getCurrentWeather(card.key)); // wait for all of them to complete const results = await Promise.all(promises); // update state with the results setRenderFavorites(results); } fetchWeather(); }, [favoriteCards]);

Aunque, como puede imaginar, hay una variedad de formas de hacer esto. Por ejemplo, el código anterior realiza todas las operaciones asincrónicas de inmediato y los resultados estarán en el orden en que terminen. Si necesita que estén en el mismo orden, puede await cada operación de una en una. Por ejemplo:

 useEffect(() => { const fetchWeather = async () => { const results = []; // await each operations in order for (const card of favoriteCards) { results.push(await accuWeatherApi.getCurrentWeather(card.key)); } // update state with the results setRenderFavorites(results); } fetchWeather(); }, [favoriteCards]);

Tenga en cuenta que, en cada caso, la función que se pasa a useEffect en sí misma no es async . Pero dado que se deben esperar las operaciones asíncronas, internamente esa función define una función que es async y luego invoca esa función. Interno a esa función es donde await las operaciones.


Aparte, también vale la pena señalar que hubo un segundo problema en su código... La sintaxis de su uso de .map() explícitamente no devuelve nada. Cuando se usan llaves en la función que se pasa a .map() , entonces no hay devolución predeterminada y debe return explícitamente un valor. Entonces, incluso si estuviera esperando las operaciones o si no fueran asincrónicas en primer lugar, aún estaría undefined porque no hay un valor de retorno.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda