JSFiddle - React, Tailwind, and code Playground
by jfriend00
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/2.10.1/bluebird.js"></script>
JavaScript
// assign vars to make the sample code work
var P = Promise;
var debug = log;
// Convenience function
var fetchOrders = function() {
return fetchOrderList().then(function(orders) {
return P.map(orders, function(r) {
return fetchOrderById(r.id);
}, {concurrency: 1});
});
};
// Fetch initial order list
var fetchOrderList = function() {
return new P(function(resolve, reject) {
debug('Fetching initial list');
resolve([{
id: 123
}, {
id: 134
}, {
id: 1333
}]);
});
};
var fetchOrderById = function(id) {
return new P(function(resolve, reject) {
debug('Fetching by ID');
resolve({
foo: 'bar'
});
}).then(function(o) {
debug('Saving');
return o;
})
};
fetchOrders();
// utility for displaying output in main window (like console.log() does)
function log(args) {
var str = "";
for (var i = 0; i < arguments.length; i++) {
if (typeof arguments[i] === "object") {
str += JSON.stringify(arguments[i]);
} else {
str += arguments[i];
}
}
var div = document.createElement("div");
div.innerHTML = str;
var target = log.id ? document.getElementById(log.id) : document.body;
target.appendChild(div);
}