yaahor
yaahor

Reputation: 113

rxjs: Subscribe each time value is emitted

I want to subscribe to mousemove event each time mouse is clicked down and unsubscribe each time mouse is clicked up.

// start when mousedown
Observable.fromEvent(element, 'mousedown')
          .subscribe(() => {
              Observable.fromEvent(element, 'mousemove')
                        // finish when mouseup
                        .takeUntil(Observable.fromEvent(element, 'mouseup'))
                        .subscribe(() => {/*do something on mousemove*/});
          });

Is it possible to optimize the code (to have single "subscribe" method)?

Upvotes: 1

Views: 50

Answers (1)

ZahiC
ZahiC

Reputation: 14717

Observable.fromEvent(element, 'mousedown')
    .switchMap(() =>
        Observable.fromEvent(element, 'mousemove')
            .takeUntil(Observable.fromEvent(element, 'mouseup'))
    )
    .subscribe(() => {/*do something on mousemove*/});

Upvotes: 4

Related Questions