@@ -4,6 +4,8 @@ import { addToError, global, createSymbol, baseURI } from './common.js';
4
4
5
5
export default RegisterLoader ;
6
6
7
+ var resolvedPromise = Promise . resolve ( ) ;
8
+
7
9
/*
8
10
* Register Loader
9
11
*
@@ -195,7 +197,7 @@ function createProcessAnonRegister (loader, load, state) {
195
197
function instantiate ( loader , load , link , registry , state ) {
196
198
return link . instantiatePromise || ( link . instantiatePromise =
197
199
// 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 ( ) {
199
201
state . lastRegister = undefined ;
200
202
return loader [ INSTANTIATE ] ( load . key , loader [ INSTANTIATE ] . length > 1 && createProcessAnonRegister ( loader , load , state ) ) ;
201
203
} ) )
@@ -413,37 +415,27 @@ function instantiateDeps (loader, load, link, registry, state) {
413
415
}
414
416
415
417
function 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 ) ) ;
441
433
}
442
- if ( loadCnt === 0 )
443
- resolve ( ) ;
444
- }
445
- queueLoad ( load ) ;
446
- } ) ;
434
+ return Promise . all ( depPromises ) ;
435
+ } ) ;
436
+ } ;
437
+
438
+ return addDeps ( load , link ) ;
447
439
}
448
440
449
441
/*
0 commit comments