gpt4 book ai didi

javascript - JQuery 延迟。使用 $.when 和 .progress()

转载 作者:可可西里 更新时间:2023-11-01 01:32:19 25 4
gpt4 key购买 nike

我正在编写一个充斥着异步任务的解析器。我使用 JQuery promises 来控制和排序异步任务。这是构造函数的伪代码版本:

   /**
* @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 文档:

In the case where multiple Deferred objects are passed to jQuery.when, the method returns the Promise from a new "master" Deferred object that tracks the aggregate state of all the Deferreds it has been passed

我如何使用 .progress() 来通知任何关心解析器整体进度的人? 例如

var parser = new Parser(json);
parser.progress(function(prog){console.log(prog});

这是我正在尝试做的事情的 fiddle : http://jsfiddle.net/ashanova/RjULA/2/

最佳答案

使用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 .

关于javascript - JQuery 延迟。使用 $.when 和 .progress(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12075588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com