Sto scrivendo un parser pieno di compiti asincroni. Io uso JQuery promette di controllare e ordinare i compiti asincroni. Questa è una versione di codice pseudo della funzione di costruzione:
/**
* @constructor
*/
function Parser(json)
{
return $.when(
this.delete().then(this.insert(json)),
this.doSomething(),
this.doSomethingElse().then(this.update(json))
)
};
e questo è ciò che una funzione di esempio si presenta come:
Parser.prototype.doSomething = function()
{
var dfd = $.Deferred();
exampleTask(dfd.reject, dfd.resolve);
return dfd.promise();
};
Dalla documentazione JQuery:
Nel caso in cui più oggetti differiti vengono passati a jQuery.quando, il metodo restituisce la promessa da un nuovo oggetto "principale" rinviato che tiene traccia dello stato aggregato di tutti i differiti che ha b een passò
Come posso usare .progress() per notificare a nessuno che si preoccupa per l'andamento generale del parser? ad es.
var parser = new Parser(json);
parser.progress(function(prog){console.log(prog});
Heres un violino con quello che sto cercando di fare: http://jsfiddle.net/ashanova/RjULA/2/
Ho scoperto come usare .notify all'interno di una funzione (come nella demo), ma voglio passarlo di nuovo al costruttore e notificare i progressi generali da lì. Voglio vedere dove il parser è globale, non le sue funzioni - se mi segui? – JonWells
@Jaoa come questo: http://jsfiddle.net/ashanova/RjULA/2/ – JonWells
@CrimsonChin: Non so se ho capito correttamente la tua domanda, ma in tal caso, avresti bisogno di creare e memorizzare un riferimento al '$ .Deferred' nel costruttore, in modo da poter chiamare' notify' all'interno di ciascun metodo. Qualcosa in questo senso: http://jsfiddle.net/B7nzy/ –