Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript加载异步依赖项_Javascript_Jquery_Asynchronous_Dependencies - Fatal编程技术网

Javascript加载异步依赖项

Javascript加载异步依赖项,javascript,jquery,asynchronous,dependencies,Javascript,Jquery,Asynchronous,Dependencies,我尝试只在需要和异步时加载不同的.js和.html文件。但是现在我有一个问题,一些文件需要在加载之前加载其他文件。 我试图用dependencies变量解决这个问题。之后,我每50毫秒检查一次是否加载了依赖项,如果没有,则必须在加载其他所有需要的文件之前加载依赖项 这是我的密码 var dependencies = { Module1: [], Module2: ["Module1"], loadStates: { Module1: false,

我尝试只在需要和异步时加载不同的.js和.html文件。但是现在我有一个问题,一些文件需要在加载之前加载其他文件。 我试图用dependencies变量解决这个问题。之后,我每50毫秒检查一次是否加载了依赖项,如果没有,则必须在加载其他所有需要的文件之前加载依赖项

这是我的密码

var dependencies = {
    Module1: [],
    Module2: ["Module1"],
    loadStates: {
        Module1: false,
        Module2: false
    }
};
function initModule(id, moduleID, module) {
    var moduleInitialData = br6_config.moduleInitialData[id];
    if (moduleInitialData) {
        function loadModule(target, name) {
            var isLoaded = true;
            if (isLoaded === false) {
                console.log("file already loaded");
            }
            $(target).load("html/modules/" + name + ".html", function (response, status, xhr) {
                console.log(name + ".html" + " " + status);

                var modulesToLoad = dependencies[name];
                for (var i = 0; i < modulesToLoad.length; i++) {
                    var moduleToLoad = modulesToLoad[i];
                    var interval = setInterval(function () {
                        if (dependencies.loadStates[moduleToLoad] === false) {
                            loadJS(moduleToLoad);
                            clearInterval(interval);
                            if (dependencies.loadStates[name] === false) {
                                loadJS(name);
                            }
                        }
                    }, 50);
                }
                function loadJS(name) {
                    $.getScript("js/modules/" + name + ".js").done(function (textStatus) {
                        console.log(name + ".js geladen");
                        isLoaded = true;

                        if (name === Module1) {
                            module.instance = new Module1(id, moduleInitialData);
                            dependencies.loadStates[name] = true;
                        }
                        if (name === Module2) {
                            module.instance = new Module2(id, moduleInitialData);
                            dependencies.loadStates[name] = true;
                        }
                    }).fail(function (error, b, c) {
                        console.log(name + ".js nicht geladen");
                        console.log(error);
                        console.log(b);
                        console.log(c);
                    });
                }
            });
        }
        if (moduleID === "module1") {
            loadModule('#module1, Module1);
        }
        if (moduleID === "module2") {
            loadModule('#module2, Module2);
        }
var依赖项={
模块1:[],
模块2:[“模块1”],
装载状态:{
模块1:错误,
模块2:错误
}
};
函数initModule(id、moduleID、module){
var moduleInitialData=br6u config.moduleInitialData[id];
if(模块初始数据){
函数loadModule(目标、名称){
var isLoaded=true;
如果(isLoaded==false){
log(“文件已加载”);
}
$(target).load(“html/modules/”+name+“.html”,函数(响应、状态、xhr){
console.log(名称+”.html“+”+状态);
var modulesToLoad=依赖项[名称];
对于(变量i=0;i
有时一切正常,但有时我的代码希望在模块1之前加载模块2,因此我得到一个错误。因此,检查依赖关系时存在一些问题


有人能帮我解决这个问题吗?我真的很感谢你的帮助!

为什么不使用require.JS之类的依赖关系管理器(或者更好,使用webpack)你发布的代码有简单的语法错误,如果这是你实际使用的代码,它无法创建一个提供注册功能的脚本(核心)并将脚本添加为模块。可以通过使用模块的src调用核心来加载模块。模块可以以相同的方式调用其他模块。依赖项在模块本身中进行管理。请确保在调用时检查模块是否正在加载/是否已加载。