Merge branch '3.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / js / require.linearExecution.js
CommitLineData
0795d180
AE
1(function(window) {
2 var orgRequire = window.require;
3 var queue = [];
4 var counter = 0;
5
75862143 6 window.require = function(dependencies, callback, errBack) {
0795d180
AE
7 if (!Array.isArray(dependencies)) {
8 return orgRequire.apply(window, arguments);
9 }
10
bb8e158a
TD
11 var promise = new Promise(function (resolve, reject) {
12 var i = counter++;
13 queue.push(i);
14
15 orgRequire(dependencies, function () {
75862143
TD
16 var args = arguments;
17
bb8e158a 18 queue[queue.indexOf(i)] = function() { resolve(args); };
75862143
TD
19
20 executeCallbacks();
bb8e158a
TD
21 }, function (err) {
22 queue[queue.indexOf(i)] = function() { reject(err); };
75862143
TD
23
24 executeCallbacks();
25 });
bb8e158a
TD
26 });
27
28 if (callback) {
29 promise.then(function (objects) {
30 callback.apply(window, objects);
75862143
TD
31 });
32 }
bb8e158a
TD
33 if (errBack) {
34 promise.catch(errBack);
35 }
36
37 return promise;
0795d180 38 };
45433290 39 window.require.config = orgRequire.config;
0795d180
AE
40
41 function executeCallbacks() {
42 while (queue.length) {
43 if (typeof queue[0] !== 'function') {
44 break;
45 }
46
47 queue.shift()();
48 }
f0115fd9 49 }
0795d180 50})(window);