我正在编写一个包含异步任务的解析器。我使用JQuery承诺来控制和排序异步任务。这是构造函数的psuedo代码版本:
/**
* @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文档:
在将多个延迟对象传递给jQuery.when的情况下,该方法将从一个新的“主”延迟对象返回承诺,该对象跟踪已传递的所有Deferreds的聚合状态
如何使用.progress()通知关心解析器总体进度的人?例如:
var parser = new Parser(json);
parser.progress(function(prog){console.log(prog});以下是我想要做的事情:http://jsfiddle.net/ashanova/RjULA/2/
发布于 2012-08-22 14:52:58
使用deferred.notify()调用progressCallbacks。例如:
function doSomething() {
var dfd = $.Deferred();
var count = 0;
var intervalId = setInterval(function() {
dfd.notify(count++);
count > 3 && clearInterval(intervalId);
}, 500);
return dfd.promise();
};
var promise = doSomething();
promise.progress(function(prog) {
console.log(prog);
});DEMO。
https://stackoverflow.com/questions/12075588
复制相似问题