]> git.wh0rd.org - tt-rss.git/blob - lib/dojo/_base/Deferred.js
add dijit/dojo stuff; initial ui mockup
[tt-rss.git] / lib / dojo / _base / Deferred.js
1 /*
2 Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3 Available via Academic Free License >= 2.1 OR the modified BSD license.
4 see: http://dojotoolkit.org/license for details
5 */
6
7
8 if(!dojo._hasResource["dojo._base.Deferred"]){
9 dojo._hasResource["dojo._base.Deferred"]=true;
10 dojo.provide("dojo._base.Deferred");
11 dojo.require("dojo._base.lang");
12 (function(){
13 var _1=function(){
14 };
15 var _2=Object.freeze||function(){
16 };
17 dojo.Deferred=function(_3){
18 var _4,_5,_6,_7,_8;
19 var _9=this.promise={};
20 function _a(_b){
21 if(_5){
22 throw new Error("This deferred has already been resolved");
23 }
24 _4=_b;
25 _5=true;
26 _c();
27 };
28 function _c(){
29 var _d;
30 while(!_d&&_8){
31 var _e=_8;
32 _8=_8.next;
33 if(_d=(_e.progress==_1)){
34 _5=false;
35 }
36 var _f=(_6?_e.error:_e.resolved);
37 if(_f){
38 try{
39 var _10=_f(_4);
40 if(_10&&typeof _10.then==="function"){
41 _10.then(dojo.hitch(_e.deferred,"resolve"),dojo.hitch(_e.deferred,"reject"));
42 continue;
43 }
44 var _11=_d&&_10===undefined;
45 _e.deferred[_11&&_6?"reject":"resolve"](_11?_4:_10);
46 }
47 catch(e){
48 _e.deferred.reject(e);
49 }
50 }else{
51 if(_6){
52 _e.deferred.reject(_4);
53 }else{
54 _e.deferred.resolve(_4);
55 }
56 }
57 }
58 };
59 this.resolve=this.callback=function(_12){
60 this.fired=0;
61 this.results=[_12,null];
62 _a(_12);
63 };
64 this.reject=this.errback=function(_13){
65 _6=true;
66 this.fired=1;
67 _a(_13);
68 this.results=[null,_13];
69 if(!_13||_13.log!==false){
70 (dojo.config.deferredOnError||function(x){
71 console.error(x);
72 })(_13);
73 }
74 };
75 this.progress=function(_14){
76 var _15=_8;
77 while(_15){
78 var _16=_15.progress;
79 _16&&_16(_14);
80 _15=_15.next;
81 }
82 };
83 this.addCallbacks=function(_17,_18){
84 this.then(_17,_18,_1);
85 return this;
86 };
87 this.then=_9.then=function(_19,_1a,_1b){
88 var _1c=_1b==_1?this:new dojo.Deferred(_9.cancel);
89 var _1d={resolved:_19,error:_1a,progress:_1b,deferred:_1c};
90 if(_8){
91 _7=_7.next=_1d;
92 }else{
93 _8=_7=_1d;
94 }
95 if(_5){
96 _c();
97 }
98 return _1c.promise;
99 };
100 var _1e=this;
101 this.cancel=_9.cancel=function(){
102 if(!_5){
103 var _1f=_3&&_3(_1e);
104 if(!_5){
105 if(!(_1f instanceof Error)){
106 _1f=new Error(_1f);
107 }
108 _1f.log=false;
109 _1e.reject(_1f);
110 }
111 }
112 };
113 _2(_9);
114 };
115 dojo.extend(dojo.Deferred,{addCallback:function(_20){
116 return this.addCallbacks(dojo.hitch.apply(dojo,arguments));
117 },addErrback:function(_21){
118 return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments));
119 },addBoth:function(_22){
120 var _23=dojo.hitch.apply(dojo,arguments);
121 return this.addCallbacks(_23,_23);
122 },fired:-1});
123 })();
124 dojo.when=function(_24,_25,_26,_27){
125 if(_24&&typeof _24.then==="function"){
126 return _24.then(_25,_26,_27);
127 }
128 return _25(_24);
129 };
130 }