Skip to content

Instantly share code, notes, and snippets.

@annatomka
Created October 31, 2015 01:03
Show Gist options
  • Save annatomka/fdc22f95b5ec1994bfee to your computer and use it in GitHub Desktop.
Save annatomka/fdc22f95b5ec1994bfee to your computer and use it in GitHub Desktop.
Simple RxJS code
var helloWorldObservable = null;
var buttonClickObservable = Rx.Observable.create(function(observer) {
var clickerListener = function() {
observer.onNext(true);
console.log("clicker was clicked")
};
var clickerBtn = $("#clicker");
clickerBtn.on("click", clickerListener);
return function() {
console.log("I dispose you!!!!!!!!!");
clickerBtn.off("click", clickerListener);
};
});
var setIntervalObservable = Rx.Observable.create(function(observer) {
var interval = setInterval(function() {
observer.onNext(true);
console.log("awesome interval observable");
}, 5000);
return function() {
clearInterval(interval);
console.log("awesome interval cleared");
}
});
var setTimeoutObservable = Rx.Observable.create(function(observer) {
var timeout = setTimeout(function() {
observer.onNext(true);
observer.onCompleted();
}, 5000);
return function() {
clearTimeout(timeout);
console.log("awesome timeout cleared");
};
});
var setTimoutAfterButtonClickedObservable = buttonClickObservable.flatMapLatest(function(x, i) {
return setIntervalObservable.take(2);
});
var setIntervalInitiatedObservable = setIntervalObservable.startWith(true);
var buttonTwiceClickedObservable = buttonClickObservable.take(2);
var buttonClickAndIntervalMergedObservable = Rx.Observable.merge(setIntervalInitiatedObservable, buttonTwiceClickedObservable);
helloWorldObservable = setTimoutAfterButtonClickedObservable.map(function transformToHelloWorld(value) {
return "Hello World!";
});
var buttonClickSubscription = helloWorldObservable.subscribe(function onNext(value) {
document.getElementById("message").innerHTML += value;
}, function onError() {
}, function onCompleted() {
});
$("#reset").on("click", function() {
buttonClickSubscription.dispose();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment