JSFiddle - React, Tailwind, and code Playground

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/q.js/1.0.1/q.js"></script>

JavaScript

function asyncCall(i){
    var d = Q.defer();
    setTimeout(function(){ d.resolve(i)},1000);
    return d.promise;
}
function run(val) {

  var q = Q();
  for(var i = 0; i < val; i++){
    q = q.then(asyncCall.bind(null,i))
         .then(console.log.bind(console))
         .then(console.log.bind(console,"x"));
  }

  return q; // in case you want to chain
}
run(3).done();