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

151
Vistas
No se puede detener la función recursiva setTimeout en mi aplicación de seguimiento de pantalla de electrones de reacción

Estoy trabajando en una aplicación de seguimiento de pantalla que toma capturas de pantalla cada 10 minutos y las carga en un almacenamiento de Firebase. Estoy llamando a la función de inicio cuando hago clic en la función de inicio y quiero que deje de capturar la pantalla cuando hago clic en el botón de detener, pero no funciona y no puedo entender por qué. Soy un desarrollador autodidacta con menos de 3 meses de experiencia. Por favor ayuda.

 function App() { // store the screenshots in an array const [newScreenshots, setNewScreenshots] = useState(""); // const [screenshots, setScreenshots] = useState([]); const [timeoutId, setTimeoutId] = useState(false); const [progress, setProgress] = useState(0); const uploadFiles = (img) => { // logic const storageRef = ref(storage, `/screenshots/${uuidv4()}`); uploadString(storageRef, img, "data_url").then((snapshot) => { console.log("Uploaded a data_url string!"); }); }; let newTimeoutId; const screenshot = async () => { setTimeoutId(true); const newTimeoutId = setTimeout(async () => { const screenshotData = await ipcRenderer.invoke("capture"); const string = new Buffer.from(screenshotData).toString("base64"); const img = `data:image/png;base64,${string}`; console.log(img); uploadFiles(img); screenshot(); }, 600000); }; // This function is not working. I'm trying to call it using button click. const stopScreenshot = () => { setTimeoutId(false); clearTimeout(newTimeoutId); };
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Por lo tanto, evitaría usar setTimeout y, en su lugar, usaría setInterval que toma una función y un intervalo de tiempo para activarlo. Además, crearía una función para tomar una captura de pantalla, que solo se ocupa de tomar la captura de pantalla (tal vez quieras tomar una captura de pantalla a pedido algún día, tener la mitad del trabajo hecho sería bueno :))

 const takeScreenshot = async () => { const screenshotData = await ipcRenderer.invoke("capture"); const string = new Buffer.from(screenshotData).toString("base64"); const img = `data:image/png;base64,${string}`; uploadFiles(img); screenshot(); } const startRecording = () => { setInterval(() => takeScreenshot() , 60000) } stopRecording = () => {clearInterval(startRecording)}

** es posible que deba editarlo un poco

about 4 years ago · Santiago Trujillo 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