Skip to content
This repository was archived by the owner on Jul 13, 2020. It is now read-only.

Commit 48983ea

Browse files
committed
simplify deepInstantiateDeps
1 parent c18ec09 commit 48983ea

File tree

1 file changed

+23
-31
lines changed

1 file changed

+23
-31
lines changed

core/register-loader.js

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { addToError, global, createSymbol, baseURI } from './common.js';
44

55
export default RegisterLoader;
66

7+
var resolvedPromise = Promise.resolve();
8+
79
/*
810
* Register Loader
911
*
@@ -195,7 +197,7 @@ function createProcessAnonRegister (loader, load, state) {
195197
function 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

415417
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));
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

Comments
 (0)