##// END OF EJS Templates
*refactoring: Promise.Then now returns a new chained promise...
cin -
r6:dfa21d507bc5 default
parent child
Show More
@@ -51,7 +51,7 namespace Implab.Fx
51 {
51 {
52 var timer = new Timer(m_delay);
52 var timer = new Timer(m_delay);
53
53
54 timer.AutoReset = true;
54 timer.AutoReset = false;
55 timer.SynchronizingObject = m_syncronizationObject;
55 timer.SynchronizingObject = m_syncronizationObject;
56 timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
56 timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
57
57
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -151,27 +151,69 namespace Implab {
151 if (success == null && error == null)
151 if (success == null && error == null)
152 return this;
152 return this;
153
153
154 AddHandler(new ResultHandlerInfo() {
154 var medium = new Promise<T>();
155 resultHandler = success,
155
156 errorHandler = error
156 var handlerInfo = new ResultHandlerInfo();
157 });
158
157
159 return this;
158 if (success != null)
159 handlerInfo.resultHandler = x => {
160 try {
161 success(x);
162 medium.Resolve(x);
163 } catch (Exception e) {
164 medium.Reject(e);
165 }
166 };
167 else
168 handlerInfo.resultHandler = x => medium.Resolve(x);
169
170 if (error != null)
171 handlerInfo.errorHandler = x => {
172 try {
173 error(x);
174 } catch { }
175 medium.Reject(x);
176 };
177 else
178 handlerInfo.errorHandler = x => medium.Reject(x);
179
180 AddHandler(handlerInfo);
181
182 return medium;
160 }
183 }
161
184
162 public Promise<T> Then(ResultHandler<T> success) {
185 public Promise<T> Then(ResultHandler<T> success) {
163 return Then (success, null);
186 return Then(success, null);
164 }
187 }
165
188
189 public Promise<T> Error(ErrorHandler error) {
190 return Then(null, error);
191 }
192
166 public Promise<T> Anyway(Action handler) {
193 public Promise<T> Anyway(Action handler) {
167 if (handler == null)
194 if (handler == null)
168 return this;
195 return this;
196
197 var medium = new Promise<T>();
198
169 AddHandler(new ResultHandlerInfo {
199 AddHandler(new ResultHandlerInfo {
170 resultHandler = x => handler(),
200 resultHandler = x => {
171 errorHandler = x => handler()
201 try {
202 handler();
203 medium.Resolve(x);
204 } catch (Exception e) {
205 medium.Reject(e);
206 }
207 },
208 errorHandler = x => {
209 try {
210 handler();
211 } catch { }
212 medium.Reject(x);
213 }
172 });
214 });
173
215
174 return this;
216 return medium;
175 }
217 }
176
218
177 /// <summary>
219 /// <summary>
General Comments 0
You need to be logged in to leave comments. Login now