Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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 有没有办法计算发生了多少dojo.require调用以及完成了多少调用?_Javascript_Dojo - Fatal编程技术网

Javascript 有没有办法计算发生了多少dojo.require调用以及完成了多少调用?

Javascript 有没有办法计算发生了多少dojo.require调用以及完成了多少调用?,javascript,dojo,Javascript,Dojo,我正在尝试创建一个进度条,显示加载javascript依赖项的进度。 为此,我需要知道发生了多少dojo.require调用,完成了多少调用。 计算发生了多少dojo.require调用很容易,可以这样做: dojo.declare("admin.Bootstrapper", null, { requiredDependencies: 0, loadedDependencies: 0, modules: [], _require: null, constr

我正在尝试创建一个进度条,显示加载javascript依赖项的进度。
为此,我需要知道发生了多少dojo.require调用,完成了多少调用。
计算发生了多少dojo.require调用很容易,可以这样做:

dojo.declare("admin.Bootstrapper", null, {
    requiredDependencies: 0,
    loadedDependencies: 0,
    modules: [],
    _require: null,
    constructor: function()
    {
        this._require = dojo.require;

        dojo.require = dojo.hitch(this, this._loadDependency);
    },
    _loadDependency: function(module)
    {
        this._require(module);

        this.requiredDependencies++;
        console.log("requiredDependencies:" + this.requiredDependencies);

        this.modules.push(module);
    }
});

var bootstrapper = new admin.Bootstrapper();
现在我知道dojo.addOnLoad可以检查所有dojo.require调用是否已完成,但无法检查一个require调用是否已完成。
如何做到这一点?

一些可能性:

1。绕过问题。

使用Dojo将所有依赖项分组到一个.js文件中。没有更多的下载跟踪

2。使用新的异步模块

允许更细粒度的依赖关系管理

require(['foo', 'bar'], function ( foo, bar ) {
   //runs after foo and bar are loaded
   //doesn't care about other dependencies
});
3。同步所有内容

这在很多方面都是邪恶的。。。但是如果你真的需要的话,你应该完成工作

dojo.require('first.module');
dojo.ready(function(){
    dojo.require('second.module');
    dojo.ready(function(){
    });
});

我无法控制用户可能做什么,如果他们使用构建系统,这是他们的选择。我真的很想跟踪加载本身。我已经找到了一种不考虑子依赖项的方法,但是我仍然希望能够跟踪加载过程。我认为我没有100%得到这个结果。您需要您自己的文件还是需要其他地方不可靠的文件?我请求dojo文件,我自己的文件,其他用户也可能请求他们自己的文件。如果您只请求您自己的文件,您事先知道它们将是什么,以便您可以在需要时将它们捆绑起来(构建工具也适用于整个项目的子集)@missingo但我不能保证其他用户也会执行构建。