JSFiddle - React, Tailwind, and code Playground

by Ahmad Baktash Hayeri

HTML

<script src="https://cdn.jsdelivr.net/bluebird/3.4.0/bluebird.js"></script>
<div id="monitor">
Start
</div>

JavaScript

var list = [10, 9, 8, 7, 6];

function run () {
	list.reduce(function(promise, item, index){
    return promise.then(function(){
      return new Promise(function(resolve, reject){
      	setTimeout(function(){
        	resolve(item);
          list.splice(0, 1);
          console.log(list);
          document.querySelector('#monitor').innerHTML = "Processing item@" + index;
        }, 1500);
      });
    });
  }, Promise.resolve())
  .then(function(){
  	setTimeout(function(){
    	document.querySelector('#monitor').innerHTML = "Processing Finished.";
      console.log(list);
    }, 1500);
  });
}

setTimeout(run, 1000);