Ich schreibe einen Parser mit Async-Aufgaben. Ich verwende JQuery verspricht, die asynchronen Aufgaben zu steuern und zu ordnen. Dies ist eine Pseudo-Code-Version der Konstruktorfunktion:
/**
* @constructor
*/
function Parser(json)
{
return $.when(
this.delete().then(this.insert(json)),
this.doSomething(),
this.doSomethingElse().then(this.update(json))
)
};
und das ist, was ein Beispiel Funktion wie folgt aussieht:
Parser.prototype.doSomething = function()
{
var dfd = $.Deferred();
exampleTask(dfd.reject, dfd.resolve);
return dfd.promise();
};
Aus der JQuery-Dokumentation:
Für den Fall, Mehrere verzögerte Objekte werden an jQuery übergeben. Wenn die Methode die Verheißung von einem neuen "Master" Zurückgestelltes Objekt zurückgibt, das den Aggregatstatus aller Verzögerter Rückgaben verfolgt, die es hat b een geben
Wie kann ich .progress() jemand benachrichtigen, dass über die Gesamtentwicklung der Parser sich interessiert? z.B.
var parser = new Parser(json);
parser.progress(function(prog){console.log(prog});
Heres eine Geige mit dem, was ich zu tun habe versucht: http://jsfiddle.net/ashanova/RjULA/2/
Ich habe herausgefunden, wie man.notify innerhalb einer Funktion verwendet (wie in Ihrer Demo), aber ich möchte es an den Konstruktor zurückgeben und den Gesamtfortschritt von dort benachrichtigen. Ich möchte sehen, wo der Parser insgesamt ist, nicht seine Funktionen - wenn Sie mir folgen? – JonWells
@Jaoa wie folgt: http://jsfiddle.net/ashanova/RjULA/2/ – JonWells
@CrimsonChin: Nicht sicher, ob ich Ihre Frage richtig verstanden habe, aber in diesem Fall müssten Sie eine Referenz erstellen und speichern an den '$ .Deferred' in Ihrem Konstruktor, so dass Sie' notify' innerhalb jeder Methode aufrufen können. Etwas in dieser Richtung: http://jsfiddle.net/B7nzy/ –