JSFiddle - React, Tailwind, and code Playground
by gurkavcu
JavaScript
function Queue() {
var value = null,
self = this,
waiting = false,
pauseFlag = false,
_array = [];
self.add = function(defered, value) {
if(value !== undefined ) {
_array.push({d : defered , v: value , type: 'defered'});
} else {
_array.push({v: defered , type: 'absolute'});
}
}
self.process = function() {
while(_array.length > 0 && !waiting) {
var obj = _array[0];
_array = _array.slice(1,_array.length);
if(obj['type'] === 'defered') {
waiting = true;
obj['d'].done(function(){
value = obj['v'];
waiting = false;
});
}
else {
value = obj['v'];
}
}
if(!pauseFlag)
setTimeout(self.process , 1000);
}
self.get = function() {
return value;
}
self.pause = function() {
pauseFlag = true;
}
self.resume = function() {
pauseFlag = false;
self.process();
}
self.process();
}
var q = new Queue();
// Log current value of Queue every 1 second
setInterval(function(){
console.log(q.get());
},1000);
// Simulate ajax request
var defered = jQuery.Deferred();
// Add values
q.add(defered,'undefined');
q.add(12);
// Resolve ajax request after 7 second
setTimeout(function(){defered.resolve();},7000);