JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://dl.dropboxusercontent.com/u/7909102/log.js"></script>
<button id="run">Press this multiple times</button><br><br>
JavaScript
function delay(val) {
console.log("start: ", val);
return new Promise(function(resolve) {
setTimeout(function() {
console.log("end: ", val);
resolve();
}, 500);
});
}
// initialize p to a resolved promise
var p
, v = 1
, promiseFulfilled = true;
function addPromise() {
if(!p || promiseFulfilled){
console.log('reseting promise...');
p = Promise.resolve();
}
p = p.then(function() {
promiseFulfilled = false;
return delay(v++);
}).then(function(){
promiseFulfilled = true;
});
}
document.getElementById('run').onclick = addPromise;