Javascript 有没有办法计算发生了多少dojo.require调用以及完成了多少调用?
我正在尝试创建一个进度条,显示加载javascript依赖项的进度。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
为此,我需要知道发生了多少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但我不能保证其他用户也会执行构建。