Move Cache under Async but keep re-exporting it for backwards compatibility
This commit is contained in:
parent
80355cd86d
commit
0a0af17124
2 changed files with 54 additions and 51 deletions
52
src/UnitJS/Async/Cache.js
Normal file
52
src/UnitJS/Async/Cache.js
Normal file
|
@ -0,0 +1,52 @@
|
|||
function Cache(loader) {
|
||||
this.loader = loader;
|
||||
this.loaded = {};
|
||||
this.loading = {};
|
||||
}
|
||||
|
||||
Cache.prototype.get = function(key) {
|
||||
return function(f) {
|
||||
if(this.loaded[key] != undefined) {
|
||||
f(this.loaded[key]);
|
||||
} else {
|
||||
this.startLoading(key);
|
||||
this.loading[key].push(f);
|
||||
this.loader(key)(this.store(key));
|
||||
}
|
||||
}.bind(this);
|
||||
};
|
||||
|
||||
Cache.prototype.warmUp = function(key) {
|
||||
if(this.loaded[key] == undefined) {
|
||||
this.startLoading(key);
|
||||
this.loader(key)(this.store(key));
|
||||
}
|
||||
};
|
||||
|
||||
Cache.prototype.startLoading = function(key) {
|
||||
if(this.loading[key] == undefined) {
|
||||
this.loading[key] = [];
|
||||
}
|
||||
};
|
||||
|
||||
Cache.prototype.store = function(key) {
|
||||
return function(value) {
|
||||
this.loaded[key] = value;
|
||||
for(var i = 0; i < this.loading[key].length; i++) {
|
||||
this.loading[key][i](value);
|
||||
}
|
||||
this.loading[key] = null;
|
||||
}.bind(this);
|
||||
};
|
||||
|
||||
return {
|
||||
make: make
|
||||
};
|
||||
|
||||
function make(loader) {
|
||||
var cache = new Cache(loader);
|
||||
return {
|
||||
get: cache.get.bind(cache),
|
||||
warmUp: cache.warmUp.bind(cache)
|
||||
};
|
||||
}
|
|
@ -1,52 +1,3 @@
|
|||
function Cache(loader) {
|
||||
this.loader = loader;
|
||||
this.loaded = {};
|
||||
this.loading = {};
|
||||
}
|
||||
import * as Cache from UnitJS.Async.Cache;
|
||||
|
||||
Cache.prototype.get = function(key) {
|
||||
return function(f) {
|
||||
if(this.loaded[key] != undefined) {
|
||||
f(this.loaded[key]);
|
||||
} else {
|
||||
this.startLoading(key);
|
||||
this.loading[key].push(f);
|
||||
this.loader(key)(this.store(key));
|
||||
}
|
||||
}.bind(this);
|
||||
};
|
||||
|
||||
Cache.prototype.warmUp = function(key) {
|
||||
if(this.loaded[key] == undefined) {
|
||||
this.startLoading(key);
|
||||
this.loader(key)(this.store(key));
|
||||
}
|
||||
};
|
||||
|
||||
Cache.prototype.startLoading = function(key) {
|
||||
if(this.loading[key] == undefined) {
|
||||
this.loading[key] = [];
|
||||
}
|
||||
};
|
||||
|
||||
Cache.prototype.store = function(key) {
|
||||
return function(value) {
|
||||
this.loaded[key] = value;
|
||||
for(var i = 0; i < this.loading[key].length; i++) {
|
||||
this.loading[key][i](value);
|
||||
}
|
||||
this.loading[key] = null;
|
||||
}.bind(this);
|
||||
};
|
||||
|
||||
return {
|
||||
make: make
|
||||
};
|
||||
|
||||
function make(loader) {
|
||||
var cache = new Cache(loader);
|
||||
return {
|
||||
get: cache.get.bind(cache),
|
||||
warmUp: cache.warmUp.bind(cache)
|
||||
};
|
||||
}
|
||||
return Cache; //Re-export for compatibility reasons
|
||||
|
|
Loading…
Reference in a new issue