marko
Version:
UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.
32 lines (27 loc) • 621 B
JavaScript
var queueMicrotask = require("./queueMicrotask");
var count = 0;
var queue = new Set();
function noop() {}
exports.___setImmediate = function setImmediate(cb) {
queue.add(cb);
if (!count) {
queueMicrotaskInternal(noop);
}
return cb;
};
exports.___clearImmediate = function clearImmediate(id) {
queue.delete(id);
};
exports.___queueMicrotask = queueMicrotaskInternal;
function queueMicrotaskInternal(cb) {
count++;
queueMicrotask(function () {
if (--count === 0 && queue.size) {
for (const fn of queue) {
queueMicrotask(fn);
}
queue = new Set();
}
cb();
});
}