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

289
Vistas
cómo llamar a api una vez por hora con reaccionar

Me gustaría saber cómo puedo obtener la API la primera vez que vuelva a cargar la página y luego llamar a la API nuevamente una vez por hora para actualizar mi interfaz de usuario porque esa API se actualiza una vez por hora de manera predeterminada.

aquí está mi código

 const [news, setNews] = useState([]) useEffect(() => { setInterval(() => { (async () => { tryÏ { const res = await fetch(`https://newsapi.org/v2/top-headlines?country=""""&apiKey=""""""""`) const data = await res.json() setNews(data) console.log("yes") } catch (error) { console.log(error) } })() }, 36000000); }, [])

con ese código no puedo obtener resultados en la recarga de la página por primera vez, solo después de una hora ...

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

0

Mueva su llamada API a una función separada. Llámelo en la carga de la página y en el tiempo de espera:

 let callApi = async () => { try { const res = await fetch(url) const data = await res.json() setNews(data) } catch (error) { console.log(error) } }; useEffect(() => { callApi(); setInterval(callApi, 1000 * 60 * 60) });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede crear otra función y llamar desde el intervalo y fuera de ambos.

 const [news, setNews] = useState([]); useEffect(() => { const fetchData = async () => { try { const res = await fetch( `https://newsapi.org/v2/top-headlines?country=""""&apiKey=""""""""` ); const data = await res.json(); setNews(data); console.log("yes"); } catch (error) { console.log(error); } }; fetchData(); const interval = setInterval(() => { fetchData(); }, 36000000); return () => clearInterval(interval); }, []);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes probar este código:

 const [news, setNews] = useState([]); const [timer, setTimer] = useState(null); const APIResponse = async (url) => { try { const response = await fetch(url); const data = await response.json(); setNews(data); } catch (e) { console.error(e); } }; useEffect(() => { APIResponse("https://newsapi.org/v2/top-headlines?country=""""&apiKey="""""""""); setTimer( setInterval(async () => { APIResponse("https://newsapi.org/v2/top-headlines?country=""""&apiKey="""""""""); }, 5000) ); return () => clearInterval(timer); }, []);
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