RxJS Recursive Page Loading Observer
Nohting more to say...
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.3.14/rx.all.js"></script>
<script src="https://rawgit.com/trevershick/6d9364085a1e566b2e18/raw/console.js"></script>
JavaScript
var i=0;
var ajaxResponse = function (observer) {
observer.onNext(i++);
};
var source = Rx.Observable.create(function (observer) {
var nextPage=function(obs, index) {
console.log("Load page " + index);
var p = $.ajax({dataType: "json",
url: "https://s3.amazonaws.com/trevershick-experiments/BB96vEK"}).promise();
Rx.Observable.fromPromise(p)
.map(function (x){return x.QueryResult;})
.pluck('Results')
.subscribe(function(d) {
obs.onNext(d);
if (i >= 3) {
obs.onCompleted();
} else {
i++;
console.log("Starting next page load");
nextPage(obs, i);
}
});
};
nextPage(observer, i);
});
var subscription = source.subscribe(
function (x) {
console.log("results " + x);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
subscription.dispose();
});
// => Next: 42
// => Completed