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

时间:2011-11-02 13:20:46

标签: javascript dojo

我正在尝试创建一个进度条,显示加载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调用都已完成但是无法检查是否有一个需要调用完成。
怎么办呢?

1 个答案:

答案 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(){
    });
});