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
La llamada api con el temporizador no se activa cuando los accesorios se actualizan más rápido de lo que está configurado el temporizador

Tengo 2 useEffects dentro de mi componente con los métodos setTimeout y clearTimeout dentro de ellos. Ambos se actualizan en función de los mismos accesorios y las condiciones dentro de ellos son las mismas, sin embargo, uno está configurado para dispararse cada 3 segundos y el otro debería dispararse cada 1 minuto.

Mi problema es que el que debería actualizarse cada minuto no se activa en absoluto.

Creo que puede reiniciarse cada vez que se actualizan los accesorios (cada 3 segundos cuando me consuelo dentro de la instrucción if , es consolador), pero no estoy seguro de cómo solucionar esto, ya que los accesorios se actualizarán cada vez que se active el primero.

Mi objetivo aquí es

  1. Para llegar a un punto final cada 3 segundos hasta obtener un resultado esperado y
  2. Registre este evento cada 1 minuto para no sobrecargar la base de datos enviando la misma información una y otra vez.

estos son mis efectos de uso:

 useEffect(() => { if(!providerData?.providerAvailable ) { sendMessage({ code: 'NO_PROVIDER_AVAILABLE', value: 'No provider currently available', }); const timerId = window.setTimeout(() => providerRefetch(), 3000); return () => window.clearTimeout(timerId); } else { return; } }, [providerData]); // send No provider event every minute useEffect(() => { if ( !providerData?.providerAvailable ) { const eventId = window.setTimeout(() => sendEvent(), 60000, { key: 'NO_PROVIDER_AVAILABLE', description: 'No provider currently available', }); return () => window.clearTimeout(eventId); } else { return; } }, [providerData]);
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En lugar de basar mi segundo efecto de uso en los mismos accesorios que el primero, creé un recuento que aumenta cada vez que se llama al primero y el segundo efecto de uso se actualiza cuando se actualiza el recuento:

 const [callCount, setCallCount] = useState(0); useEffect(() => { if ( providerError || (!providerData?.providerAvailable && providerData?.providerState !== 'engaged') ) { if (callCount < 21) { let count = callCount + 1; setCallCount(count); } else { setCallCount(0); } sendMessage({ type: 'EVENT', code: 'NO_PROVIDER_AVAILABLE', value: 'No provider currently available', }); const timerId = window.setTimeout(() => providerRefetch(), 3000); return () => window.clearTimeout(timerId); } else { return; } }, [providerData, providerRefetch, providerError]); // send No provider event every minute useEffect(() => { if (callCount === 2) { sendEvent({ key: 'NO_PROVIDER_AVAILABLE', description: 'No provider currently available', }) } else { return; } }, [callCount]);
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