JSFiddle - React, Tailwind, and code Playground
by johnsonjo4531
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.0.6/rx.all.js"></script>
<script src="//jashkenas.github.io/underscore/underscore-min.js"></script>
<script src="https://code.jquery.com/jquery-latest.js"></script>
<div>
<input id="input1" type="text">
<button id="data1">Submit</button>
</div>
JavaScript
console.clear();
var data1Click$ = Rx.Observable.fromEvent(document.getElementById('data1'), 'click').map(function () {
return document.getElementById('input1').value
});
data1Click$
.flatMap(function (data) {
return getAjax(data, 100, [100, 300]);
})
.flatMapLatest(function (data) {
return grabManyIndividual(data);
})/* */
.subscribe((data) => displayData(data));
// replace this with ajax call to get all data
function getAjax (queryData, count, range) {
range = range || [100, 300];
return new Promise(function (resolve) {
setTimeout(function () {
var result = [];
for(var i = 1; i <= (count || 100); ++i) {
result.push("" + queryData + " " + i);
}
resolve(result);
}, getRandomIntInclusive(...range));
});
}
function grabManyIndividual (data) {
return Rx.Observable.from(data).flatMap(function (datum) {
return getAjax(datum, 1, [2000, 20000])
.then(function (datum) {
return datum[0];
});
})
}
function displayData (data) {
console.log(data);
}
function getRandomIntInclusive(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}