J'ai besoin d'attraper l'événement en appuyant simultanément sur les boutons gauche et droit de la souris avec RxJS. Plus précisément, vous devez attraper l'événement mouseup avec les boutons droit et gauche de la souris avec une différence maximale de 300 ms.

1
Artee 12 mars 2019 à 17:03

2 réponses

Meilleure réponse
  1. Créez deux flux, un pour les clics gauche et un pour les clics droits
  2. mapper ces deux Date.now()
  3. Ensuite, vous voulez combineLatest les deux flux
  4. Enfin filter les valeurs qui sont distantes de plus de 300ms
2
Tom Cumming 12 mars 2019 à 15:02

Sur les conseils de Tom Cumming

import { fromEvent, combineLatest } from 'rxjs'
import { filter, map } from 'rxjs/operators'
const upLeft$ = fromEvent(document, 'mouseup').pipe(filter((e) => e.which === 1), map(()=>Date.now()))
const upRight$ = fromEvent(document, 'mouseup').pipe(filter((e) => e.which === 3), map(()=>Date.now()))

const combined$ = combineLatest(upLeft$ , upRight$).pipe(filter((e)=> (e[1]-e[0])<=300 && (e[1]-e[0])>0), map((e)=> (e[1]-e[0])));

combined$.subscribe(() => {
console.log("It work!!!")
});
0
Artee 12 mars 2019 à 15:29