Привет.
Все никак не могу заставить функцию require, вызывать саму себя, чтобы она поглотила следующий файл для lazyload-загрузки из переменной file
Сделать пытаюсь с помощью arguments.callee (переменная loader).
Пишет ошибку:
too much recursion
var PROJECT=(function(){
function require(config) {
config.file = [].concat(config.file);
config.callback = [].concat(config.callback);
var
cacheable = config.cacheable || false,
path = config.path || '',
file = path + config.file.shift(),
loader = arguments.callee
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.src = file;
script.onload = callback();
script.onreadystatechange = function () {
if (this.readyState == 'complete' || this.readyState == 'loaded') {
callback();
}
};
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(script, s);
function callback() {
while( config.callback.length ){
config.callback.shift()();
}
} // function callback()
loader(config)
} // function require()
require(
{
file: [
'test.js',
'test2.js'
],
callback: function(){
alert('work!')
},
cacheable: true
});
})();
Еще
ОЧЕНЬ хочется услышать советы, как можно доработать этот lazyload?!