44 lines
962 B
JavaScript
44 lines
962 B
JavaScript
define(function (){
|
|
var exports = {},
|
|
queue = [],
|
|
now = function () {
|
|
return performance.now() || Date.now();
|
|
};
|
|
|
|
exports.add_function_delayed = function(delay, callback, data) {
|
|
queue.push({
|
|
func: callback,
|
|
pushed: now(),
|
|
delay: delay,
|
|
data: data
|
|
});
|
|
}
|
|
|
|
exports.get = function () {
|
|
return queue;
|
|
}
|
|
|
|
exports.run = function () {
|
|
var i = 0,
|
|
current,
|
|
lrt_inner;
|
|
|
|
while (current = queue[i++]) {
|
|
if (now() - current.pushed > current.delay) {
|
|
current.func();
|
|
queue.splice(i - 1, 1);
|
|
}
|
|
}
|
|
|
|
if (queue.length) {
|
|
// Waste a ms to prevent callstack overflow
|
|
lrt_inner = now();
|
|
|
|
while (now() - lrt_inner < 1) { void 0; };
|
|
|
|
exports.run();
|
|
}
|
|
}
|
|
|
|
return exports;
|
|
}); |