JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.4.1/rx.all.min.js"></script>
<p>
<a class="btn btn-default btn-large" href="javascript:" role="button" id="2">Click me second</a>
<a class="btn btn-primary btn-large" href="javascript:" role="button" id="1">Click me first</a>
<span id="result"></span>
</p>
<p>Buttons clicked: <span id="clicked"></span></p>
JavaScript
// Dom
var buttonOne = $('#1');
var buttonOneClickStream = Rx.Observable.fromEvent(buttonOne, 'click');
var buttonTwo = $('#2');
var buttonTwoClickStream = Rx.Observable.fromEvent(buttonTwo, 'click');
var result = $('#result');
var clicked = $('#clicked');
// Streams
var clickedAnything = buttonOneClickStream
.map(function () { return 1; })
.merge(
buttonTwoClickStream.map(function() { return 2; })
);
var lastTwoClicks = clickedAnything
.bufferWithCount(2);
var firstThenSecond = function (arr) {
return arr[0] === 1 && arr[1] === 2;
};
var clickedFirstThenSecond = lastTwoClicks
.filter(firstThenSecond);
var clickedOtherPattern = lastTwoClicks
.filter(
function (arr) { return !firstThenSecond(arr); }
);
// Results
var updateClicks = clickedAnything.subscribe(function(x) {
clicked.text(clicked.text() + " " + x); // lol so slow
});
var clearResultOnClick = clickedAnything.subscribe(function() {
result.text("");
});
var notifyOnSuccess = clickedFirstThenSecond.subscribe(function() {
result.text("you are so good at following directions");
clicked.text(clicked.text() + " | ");
});
var notifyOnFailure = clickedOtherPattern.subscribe(function() {
result.text("why did you not follow the directions :(");
clicked.text(clicked.text() + " | ");
});