var deferred = [];
<%- ON_CHUNKS_LOADED %> = <%- basicFunction("result, chunkIds, fn, priority") %> {
if (chunkIds) {
priority = priority || 0;
for (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--)
deferred[i] = deferred[i - 1];
deferred[i] = [chunkIds, fn, priority];
return;
}
var notFulfilled = Infinity;
for (var i = 0; i < deferred.length; i++) {
<%- destructureArray("chunkIds, fn, priority", "deferred[i]") %>
var fulfilled = true;
for (var j = 0; j < chunkIds.length; j++) {
if (
(priority & (1 === 0) || notFulfilled >= priority) &&
Object.keys(<%- ON_CHUNKS_LOADED %>).every(<%- returningFunction("$$RUNTIME_GLOBAL_ON_CHUNKS_LOADED$$[key](chunkIds[j])", "key") %>)
) {
chunkIds.splice(j--, 1);
} else {
fulfilled = false;
if (priority < notFulfilled) notFulfilled = priority;
}
}
if (fulfilled) {
deferred.splice(i--, 1);
var r = fn();
if (r !== undefined) result = r;
}
}
return result;
};