stafan
stafan

Reputation: 165

How to convert RxJS v4 application to RxJS v5 version

I am working on converting this application to support RxJS version 5. But I am not sure how to convert below code.

losslessClick.subscribe(function (checked) {
  if (checked) {
    mousemove.resume();
  } else {
    mousemove.pause();
  }
})

I tried suggestion from here but did not work for me.

var pauser = new Subject();
var pausable = pauser.switchMap(paused => paused ? Observable.never() : mousemove);
pausable.subscription(x => console.log(x));
pauser.next(true);

Any help would be appreciated. Thanks in advance.

Upvotes: 1

Views: 56

Answers (1)

Pradeepb
Pradeepb

Reputation: 2562

This might help you.

var losslessResults = document.getElementById('losslessResults');
var losslessToggle = document.getElementById('losslessToggle');

function logInput(text) {
    var li = document.createElement('li');
    li.innerHTML = text;
    losslessResults.appendChild(li);
}

var mousemove = Rx.Observable.fromEvent(document, 'mousemove')
    .map(function (e) {
        return 'clientX: ' + e.clientX + ', clientY: ' + e.clientY;
    });

// Lossless
var losslessClick = Rx.Observable.fromEvent(losslessToggle, 'click')
    .map(function (e) {
        return e.target.checked;
    })

var pauser = new Rx.Subject();
var pausable = pauser.switchMap(function (paused) {
    return paused ? mousemove : Rx.Observable.never();
});
pausable.subscribe(function (x) {
    return logInput(x);
});
pauser.next(true);
losslessClick.subscribe(pausable)

Working example can be found here.

Upvotes: 1

Related Questions