diff --git a/wolf.js b/wolf.js index 719b17b..20308eb 100755 --- a/wolf.js +++ b/wolf.js @@ -139,7 +139,13 @@ return; url = new URL(url, document.baseURI).href; var obj = objs[url]; - if (!obj) { + var cbl = obj instanceof CallbackList ? obj : null; + //console.debug("require: " + url + " " + (cbl ? "(precache)" : obj ? "(cache)" : "(fetch)")); + if (cbl) { + cbl.add(callback); + } else if (!obj) { + cbl = objs[url] = new CallbackList(); + cbl.add(callback); TOOLS.wGet(url, function (data) { try { var inc = Function("'use strict';return " + data + ";\n//# sourceURL=" + url); @@ -149,7 +155,7 @@ } instantiate(inc(), function (lobj) { objs[url] = lobj; - callback && callback(lobj); + cbl.fire([lobj]); }, url); }, function (error, stage) { if (error && error.status && error.status == 404)