Javascript 在do…while中注入多个依赖项

Javascript 在do…while中注入多个依赖项,javascript,dependency-injection,Javascript,Dependency Injection,在将应用程序装载到给定节点之前,我试图将多个依赖项注入DOM,但它挂起/崩溃 function injectSingle (file, done) { var source; switch (file.type) { case 'js': source = document.createElement('script'); source.src = file.src; source.asyn

在将应用程序装载到给定节点之前,我试图将多个依赖项注入DOM,但它挂起/崩溃

function injectSingle (file, done) {
    var source;

    switch (file.type) {
        case 'js':
            source = document.createElement('script');
            source.src = file.src;
            source.async = true;
            break;

        case 'css':
            source = document.createElement('link');
            source.href = file.src;
            source.type = 'text/css';
            source.rel = 'stylesheet';
            break;
    }

    if (source.readyState) { // IE
        source.onreadystatechange = function () {
            if (source.readyState == "loaded" || source.readyState == "complete"){
                source.onreadystatechange = null;
                done();
            }
        };
    } else { // Standard
        source.onload = function () {
            done();
        };
    }

    document.getElementsByTagName('head')[0].appendChild(source);
}

function injectDependencies (files, launch) {
    var ready = 0;
    do {
        injectSingle(files[ready], function () {
            ready++;
            console.log('Ready Count: %s', ready);
        });
    } while (ready < files.length - 1);
    launch();
}

(function () {
    injectDependencies([
        {
            src: '//example.com/dep.min.js',
            type: 'js'
        },
        {
            src: '//example.com/dep.2.js',
            type: 'js'
        },
        {
            src: '//example.com/dep.css',
            type: 'css'
        },
    ], function () {
        React.render(<Application/>, document.getElementById('someId'));
    })
})
函数注入单(文件,完成){
var源;
开关(file.type){
案例“js”:
source=document.createElement('script');
source.src=file.src;
source.async=true;
打破
案例“css”:
source=document.createElement('link');
source.href=file.src;
source.type='text/css';
source.rel='stylesheet';
打破
}
if(source.readyState){//IE
source.onreadystatechange=函数(){
如果(source.readyState==“已加载”| source.readyState==“已完成”){
source.onreadystatechange=null;
完成();
}
};
}else{//标准
source.onload=函数(){
完成();
};
}
document.getElementsByTagName('head')[0].appendChild(源);
}
函数依赖项(文件、启动){
var-ready=0;
做{
injectSingle(文件[ready],函数(){
ready++;
console.log('Ready Count:%s',Ready);
});
}while(ready

请忽略这一点,因为我需要用更多的文字来填充这篇文章


知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除了偶尔出于非轻率的原因,我必须为自己的行为负责。

我能够通过将
函数更改为以下内容来完成此任务:

function injectDependencies (files, launch) {
    var script, ready = 0, total = files.length;

    while (script = files.shift()) {
        injectSingle(script, function () {
            ready++;
            if (ready == total) launch();
        });
    }
}