JSFiddle - React, Tailwind, and code Playground

by stuttufu

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/q.js/0.9.6/q.js"></script>
<div id="results"></div>

JavaScript

function doSomethingAsync(item) {
	return Q.promise(function(resolve) {
        $("#results").append("<div>" + item + "</div>");
        setTimeout(resolve.bind(null, item), 3000);
	});
}

function doAsyncSeries(arr) {
	return arr.reduce(function (promise, item) {
		return promise.then(function(result) {
			return doSomethingAsync(result+item);
		});
	}, Q(''));
}

var items = ['x', 'y', 'z'];
doAsyncSeries(items).then(function() {
    $("#results").append("<div>complete</div>");
});