2 Stimmen

Gibt es eine Möglichkeit zu zählen, wie viele dojo.require-Aufrufe erfolgten und wie viele abgeschlossen wurden?

Ich versuche, einen Fortschrittsbalken zu erstellen, der das Fortschreiten des Ladens der Javascript-Abhängigkeiten anzeigt.
Dazu muss ich wissen, wie viele dojo.require-Aufrufe erfolgten und wie viele abgeschlossen wurden.
Das Zählen, wie viele dojo.require-Aufrufe erfolgt sind, ist einfach und kann wie folgt durchgeführt werden:

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();

Jetzt weiß ich, dass dojo.addOnLoad prüfen kann, ob alle dojo.require-Aufrufe abgeschlossen sind, aber es gibt keine Möglichkeit zu prüfen, ob ein require-Aufruf abgeschlossen ist.
Wie kann man das machen?

2voto

hugomg Punkte 65700

Einige Möglichkeiten:

1. Umgehen Sie das Problem.

Verwenden Sie das Dojo System aufbauen um alle Abhängigkeiten in einer einzigen .js-Datei zusammenzufassen. Keine Downloads mehr zu verfolgen!

2. Verwenden Sie die neuen asynchronen Module

AMD-Module eine feiner abgestufte Verwaltung von Abhängigkeiten ermöglichen.

require(['foo', 'bar'], function ( foo, bar ) {
   //runs after foo and bar are loaded
   //doesn't care about other dependencies
});

3. Alles synchronisieren

Das ist in vielerlei Hinsicht böse ... aber es sollte die Arbeit erledigen, wenn man es wirklich braucht.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X