Created
October 31, 2015 01:03
-
-
Save annatomka/fdc22f95b5ec1994bfee to your computer and use it in GitHub Desktop.
Simple RxJS code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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