JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/3.1.2/rx.all.compat.js"></script>
<div id="console"></div>
JavaScript
var isFizzBuzz = function(x) { return (x % 15) == 0; };
var isFizz = function(x) { return (x % 3) == 0 && !isFizzBuzz(x); };
var isBuzz = function(x) { return (x % 5) == 0 && !isFizzBuzz(x); };
var countStream = Rx.Observable.range(1, 100);
var fizzStream = countStream.filter(isFizz).map(function(_) { return 'Fizz'; });
var buzzStream = countStream.filter(isBuzz).map(function(_) { return 'Buzz'; });
var fizzBuzzStream = countStream.filter(isFizzBuzz).map(function(_) { return 'FizzBuzz'; });
var otherStream = countStream.filter(function(x) {
return !isFizz(x) && !isBuzz(x) && !isFizzBuzz(x);
}).map(function(x) {
return x;
});
var mergedStream = Rx.Observable.merge(fizzStream, buzzStream, fizzBuzzStream, otherStream);
var output = mergedStream.subscribe(function(x) {
$('<span>' + x + '</span><br />').appendTo($('#console'));
});