Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

262
Visualizações
RXJS, ¿Cómo ver el mouse y el teclado y hacer algo cuando no se ha usado ninguno durante algún tiempo?

Necesito ejecutar una función si ni el mouse se ha movido ni el teclado se ha tocado durante 1 min.

Probé el siguiente código pero no parece funcionar. ¿Cómo puedo arreglarlo? Gracias por tu ayuda.

 mouseEvent$ = fromEvent(document, 'mouseMove'); keyPress$ = fromEvent(document, 'keyup'); merge( this.mouseEvent$.pipe(startWith(null)).pipe(switchMap(() => timer(10000, 1000))), this.keyPress$.pipe(startWith(null)).pipe(switchMap(() => timer(10000, 1000))), ).subscribe(() => console.log("----));
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Lo primero que debe notar es que escribió mouseMove incorrectamente.

Así es como podría hacer esto:

 merge( fromEvent(document, 'mousemove'), fromEvent(document, 'keyup') ).pipe( share(), startWith(null), debounceTime(60000), take(1), retry() ).subscribe(_ => console.log("1 Minute without input"));
over 4 years ago · Santiago Trujillo Relatório

0

Aquí está mi opinión sobre esto:

 const mouseMove$ = fromEvent<MouseEvent>(document, 'mousemove'); const keyPress$ = fromEvent<KeyboardEvent>(document, 'keyup'); const mergeBothEvents = merge(keyPress$, mouseMove$); const interval$ = timer(60000); mergeBothEvents .pipe( startWith('initial'), switchMap(() => { return interval$; }) ) .subscribe(() => { console.log('60 seconds past'); console.log('Perform function here'); });

Un poco de lo que sucede en el código.

fromEvent<MouseEvent> utilizado para capturar los movimientos del mouse.

fromEvent<KeyboardEvent> se usa para capturar el evento de clic de la tecla del teclado hacia arriba.

merge(keyPress$, mouse$) se usa para fusionar ambos observables para que puedan ejecutarse en paralelo.

timer(60000) se usa para verificar el tiempo de un minuto antes de ejecutar la función requerida.

En mergeBothEvents hemos usado más operadores startWith() y switchMap

startWith() se usa para el caso límite en el que si el usuario no hace nada (mouse o teclado) cuando ingresa a la página, no se emitirá el evento mergeBothEvents . Gracias a @MrkSef por señalarlo.

Finalmente switchMap se usa para cancelar la suscripción anterior del evento cuando el usuario mueve el mouse o presiona el teclado para que el temporizador se reinicie desde el segundo 0.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda