resourceloader: Avoid jQuery usage in queueModuleScript
authorAaron Schulz <aschulz@wikimedia.org>
Tue, 8 May 2018 10:44:33 +0000 (03:44 -0700)
committerKrinkle <krinklemail@gmail.com>
Tue, 8 May 2018 21:29:11 +0000 (21:29 +0000)
Bug: T192623
Change-Id: I46db7883c309cdec3722dd2d6169cf239bb113fb

resources/src/mediawiki/mediawiki.js

index a8c82b1..4947952 100644 (file)
                         *
                         * @private
                         * @param {string} src URL of the script
-                        * @param {string} [moduleName] Name of currently executing module
-                        * @return {jQuery.Promise}
+                        * @param {string} moduleName Name of currently executing module
+                        * @param {Function} callback Callback to run after addScript() resolution
                         */
-                       function queueModuleScript( src, moduleName ) {
-                               var r = $.Deferred();
-
+                       function queueModuleScript( src, moduleName, callback ) {
                                pendingRequests.push( function () {
                                        if ( moduleName && hasOwn.call( registry, moduleName ) ) {
                                                // Emulate runScript() part of execute()
                                                // avoid leakage to unrelated code. 'require' should be kept, however,
                                                // as asynchronous access to 'require' is allowed and expected. (T144879)
                                                delete window.module;
-                                               r.resolve();
-
+                                               callback();
                                                // Start the next one (if any)
                                                if ( pendingRequests[ 0 ] ) {
                                                        pendingRequests.shift()();
                                        handlingPendingRequests = true;
                                        pendingRequests.shift()();
                                }
-                               return r.promise();
                        }
 
                        /**
                                                        return;
                                                }
 
-                                               queueModuleScript( arr[ i ], module ).always( function () {
+                                               queueModuleScript( arr[ i ], module, function () {
                                                        nestedAddScript( arr, callback, i + 1 );
                                                } );
                                        };