]> git.wh0rd.org - tt-rss.git/blob - lib/dojo/DeferredList.js.uncompressed.js
merge new hu_HU translation
[tt-rss.git] / lib / dojo / DeferredList.js.uncompressed.js
1 define("dojo/DeferredList", ["./_base/kernel", "./_base/Deferred", "./_base/array"], function(dojo, Deferred, darray){
2 // module:
3 // dojo/DeferredList
4
5
6 dojo.DeferredList = function(/*Array*/ list, /*Boolean?*/ fireOnOneCallback, /*Boolean?*/ fireOnOneErrback, /*Boolean?*/ consumeErrors, /*Function?*/ canceller){
7 // summary:
8 // Deprecated, use dojo/promise/all instead.
9 // Provides event handling for a group of Deferred objects.
10 // description:
11 // DeferredList takes an array of existing deferreds and returns a new deferred of its own
12 // this new deferred will typically have its callback fired when all of the deferreds in
13 // the given list have fired their own deferreds. The parameters `fireOnOneCallback` and
14 // fireOnOneErrback, will fire before all the deferreds as appropriate
15 // list:
16 // The list of deferreds to be synchronizied with this DeferredList
17 // fireOnOneCallback:
18 // Will cause the DeferredLists callback to be fired as soon as any
19 // of the deferreds in its list have been fired instead of waiting until
20 // the entire list has finished
21 // fireonOneErrback:
22 // Will cause the errback to fire upon any of the deferreds errback
23 // canceller:
24 // A deferred canceller function, see dojo.Deferred
25 var resultList = [];
26 Deferred.call(this);
27 var self = this;
28 if(list.length === 0 && !fireOnOneCallback){
29 this.resolve([0, []]);
30 }
31 var finished = 0;
32 darray.forEach(list, function(item, i){
33 item.then(function(result){
34 if(fireOnOneCallback){
35 self.resolve([i, result]);
36 }else{
37 addResult(true, result);
38 }
39 },function(error){
40 if(fireOnOneErrback){
41 self.reject(error);
42 }else{
43 addResult(false, error);
44 }
45 if(consumeErrors){
46 return null;
47 }
48 throw error;
49 });
50 function addResult(succeeded, result){
51 resultList[i] = [succeeded, result];
52 finished++;
53 if(finished === list.length){
54 self.resolve(resultList);
55 }
56
57 }
58 });
59 };
60 dojo.DeferredList.prototype = new Deferred();
61
62 dojo.DeferredList.prototype.gatherResults = function(deferredList){
63 // summary:
64 // Gathers the results of the deferreds for packaging
65 // as the parameters to the Deferred Lists' callback
66 // deferredList: dojo/DeferredList
67 // The deferred list from which this function gathers results.
68 // returns: dojo/DeferredList
69 // The newly created deferred list which packs results as
70 // parameters to its callback.
71
72 var d = new dojo.DeferredList(deferredList, false, true, false);
73 d.addCallback(function(results){
74 var ret = [];
75 darray.forEach(results, function(result){
76 ret.push(result[1]);
77 });
78 return ret;
79 });
80 return d;
81 };
82
83 return dojo.DeferredList;
84 });