@@ -4,6 +4,8 @@ import { addToError, global, createSymbol, baseURI } from './common.js';
44
55export default RegisterLoader ;
66
7+ var resolvedPromise = Promise . resolve ( ) ;
8+
79/*
810 * Register Loader
911 *
@@ -195,7 +197,7 @@ function createProcessAnonRegister (loader, load, state) {
195197function instantiate ( loader , load , link , registry , state ) {
196198 return link . instantiatePromise || ( link . instantiatePromise =
197199 // if there is already an existing registration, skip running instantiate
198- ( load . registration ? Promise . resolve ( ) : Promise . resolve ( ) . then ( function ( ) {
200+ ( load . registration ? resolvedPromise : resolvedPromise . then ( function ( ) {
199201 state . lastRegister = undefined ;
200202 return loader [ INSTANTIATE ] ( load . key , loader [ INSTANTIATE ] . length > 1 && createProcessAnonRegister ( loader , load , state ) ) ;
201203 } ) )
@@ -413,37 +415,27 @@ function instantiateDeps (loader, load, link, registry, state) {
413415}
414416
415417function deepInstantiateDeps ( loader , load , link , registry , state ) {
416- return new Promise ( function ( resolve , reject ) {
417- var seen = [ ] ;
418- var loadCnt = 0 ;
419- function queueLoad ( load ) {
420- var link = load . linkRecord ;
421- if ( ! link )
422- return ;
423-
424- if ( seen . indexOf ( load ) !== - 1 )
425- return ;
426- seen . push ( load ) ;
427-
428- loadCnt ++ ;
429- instantiateDeps ( loader , load , link , registry , state )
430- . then ( processLoad , reject ) ;
431- }
432- function processLoad ( load ) {
433- loadCnt -- ;
434- var link = load . linkRecord ;
435- if ( link ) {
436- for ( var i = 0 ; i < link . dependencies . length ; i ++ ) {
437- var depLoad = link . dependencyInstantiations [ i ] ;
438- if ( ! ( depLoad instanceof ModuleNamespace ) )
439- queueLoad ( depLoad ) ;
440- }
418+ var seen = [ ] ;
419+ function addDeps ( load , link ) {
420+ if ( ! link )
421+ return resolvedPromise ;
422+ if ( seen . indexOf ( load ) !== - 1 )
423+ return resolvedPromise ;
424+ seen . push ( load ) ;
425+
426+ return instantiateDeps ( loader , load , link , registry , state )
427+ . then ( function ( ) {
428+ var depPromises = [ ] ;
429+ for ( let i = 0 ; i < link . dependencies . length ; i ++ ) {
430+ var depLoad = link . dependencyInstantiations [ i ] ;
431+ if ( ! ( depLoad instanceof ModuleNamespace ) )
432+ depPromises . push ( addDeps ( depLoad , depLoad . linkRecord ) ) ;
441433 }
442- if ( loadCnt === 0 )
443- resolve ( ) ;
444- }
445- queueLoad ( load ) ;
446- } ) ;
434+ return Promise . all ( depPromises ) ;
435+ } ) ;
436+ } ;
437+
438+ return addDeps ( load , link ) ;
447439}
448440
449441/*
0 commit comments