我正在尝试创建一个进度条,显示加载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调用都已完成但是无法检查是否有一个需要调用完成。
怎么办呢?
答案 0 :(得分:2)
一些可能性:
<强> 1。解决问题。
使用Dojo build system将所有依赖项分组到一个.js文件中。没有更多的下载跟踪!
<强> 2。使用新的异步模块
AMD modules允许更精细的依赖管理。
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(){
});
});