我正在编写一个充满异步任务的解析器。我使用 JQuery 承诺来控制和排序异步任务。这是构造函数的伪代码版本:
/**
* @constructor
*/
function Parser(json)
{
return $.when(
this.delete().then(this.insert(json)),
this.doSomething(),
this.doSomethingElse().then(this.update(json))
)
};
这是一个示例函数的样子:
Parser.prototype.doSomething = function()
{
var dfd = $.Deferred();
exampleTask(dfd.reject, dfd.resolve);
return dfd.promise();
};
来自 JQuery 文档:
在将多个 Deferred 对象传递给 jQuery.when 的情况下,该方法从一个新的“主” Deferred 对象返回 Promise,该对象跟踪它已传递的所有 Deferred 的聚合状态
如何使用 .progress() 通知任何关心 Parser 整体进度的人?例如
var parser = new Parser(json);
parser.progress(function(prog){console.log(prog});
这是我正在尝试做的事情:http: //jsfiddle.net/ashanova/RjULA/2/