Javascript 在do…while中注入多个依赖项
在将应用程序装载到给定节点之前,我试图将多个依赖项注入DOM,但它挂起/崩溃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
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();
});
}
}