Estoy escribiendo un analizador lleno de tareas asíncronas. Uso las promesas de JQuery para controlar y ordenar las tareas asincrónicas. Esta es una versión pseudo código de la función constructora:
/**
* @constructor
*/
function Parser(json)
{
return $.when(
this.delete().then(this.insert(json)),
this.doSomething(),
this.doSomethingElse().then(this.update(json))
)
};
y esto es lo que parece una función de ejemplo como:
Parser.prototype.doSomething = function()
{
var dfd = $.Deferred();
exampleTask(dfd.reject, dfd.resolve);
return dfd.promise();
};
A partir de los documentos de JQuery:
En el caso en que se pasan múltiples objetos aplazados a jQuery.when, el método devuelve la promesa de un nuevo objeto diferido "maestro" que rastrea el estado agregado de todos los aplazados que tiene b een pasó
¿Cómo puedo usar .progress() para notificar a alguien que se preocupa por el progreso general del analizador? p.
var parser = new Parser(json);
parser.progress(function(prog){console.log(prog});
Heres un violín con lo que estoy tratando de hacer: http://jsfiddle.net/ashanova/RjULA/2/
Descubrí cómo usar .notify dentro de una función (como en su demo), pero quiero pasarla de nuevo al constructor y notificar el progreso general desde allí. Quiero ver dónde está el analizador en general, no sus funciones, si me sigues? – JonWells
@Jaoa de esta manera: http://jsfiddle.net/ashanova/RjULA/2/ – JonWells
@CrimsonChin: No estoy seguro si entendí su pregunta correctamente, pero en ese caso, necesitaría crear y almacenar una referencia al '$ .Deferred' en su constructor, para que pueda llamar a' notify' dentro de cada método. Algo en esta línea: http://jsfiddle.net/B7nzy/ –