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

131
Vistas
¿Está esperando la actualización de estado de la API con React Hooks (useEffect)?

Estoy tratando de lograr lo siguiente:

Usando React + React Hooks + useEffect

  1. Hacer una solicitud de publicación de API
  2. Recibir una identificación
  3. Realización de otra solicitud de publicación utilizando el ID para obtener el estado (En cola o Completado)

Así que básicamente

 { id: "xxxxxxx", status: "queued" }

Es lo que recibo de vuelta. Ahora el tiempo de procesamiento varía, pero quiero verificar periódicamente si el estado ha cambiado de "en cola" a "completado". Y aunque no está completo, quiero mostrar una rueda giratoria de carga.

Cuál sería la mejor forma de hacer esto? ¿Sería esto posible con promesas/funciones asíncronas? ¿O tengo que usar algún tipo de intervalo para volver a verificar el estado periódicamente?

Básicamente estoy tratando de usar esto en React: https://docs.assemblyai.com/walkthroughs#authentication

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

0

Podrías hacer algo como esto:

 // Mocks - after the 2nd attempt getStatus will return "done" const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); let attempt = 0; const getId = async () => { console.log("getId"); await delay(); return { id: "id1" }; }; const getStatus = async (id) => { console.log("getStatus", { id, attempt }); attempt += 1; await delay(1000); return { id, status: attempt < 2 ? "queued" : "done" }; }; export default function App() { const [id, setId] = useState(); const [isDone, setIsDone] = useState(false); useEffect(() => { const effect = async () => { const { id } = await getId(); setId(id); }; effect(); }, []); useEffect(() => { let cancelled = false; const effect = async () => { let { status } = await getStatus(id); while (status !== "done") { if (cancelled) { return; } await delay(1000); status = (await getStatus(id)).status; } setIsDone(true); }; if (id) { effect(); } return () => { cancelled = true; }; }, [id]); return ( <div className="App"> <h1>Hello CodeSandbox</h1> <h2>{isDone ? "Done" : "Loading..."}</h2> </div> ); }

Nota: esto está simplificado y no cubre escenarios de error, pero muestra cómo se puede armar.

Editar sospechoso-tesla-2ue0m0

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