15
我正在寫一個解析器,散佈着異步任務。我使用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, 該方法從一個新的「主」延遲對象 返回Promise,該追蹤對象追蹤它具有b的所有延遲的聚合狀態een passed
我該如何使用.progress()來通知任何關心解析器整體進度的人? 例如
var parser = new Parser(json);
parser.progress(function(prog){console.log(prog});
繼承人什麼,我試圖做一個小提琴: http://jsfiddle.net/ashanova/RjULA/2/
我想出瞭如何在函數中使用.notify(如在你的演示中),但是我想把它傳遞迴構造函數並通知從那裏開始的整體進度。我想看看解析器在哪裏,而不是它的功能 - 如果你跟着我? – JonWells
@Jaoa是這樣的:http://jsfiddle.net/ashanova/RjULA/2/ – JonWells
@CrimsonChin:不知道我是否正確理解了你的問題,但在這種情況下,你需要創建並存儲一個引用到構造函數中的'$ .Deferred',這樣你就可以在每個方法中調用'notify'。東西沿着這些線:http://jsfiddle.net/B7nzy/ –