Auto status change to "Under Review"
@@ -13,6 +13,12 | |||||
13 |
|
13 | |||
14 | Running, |
|
14 | Running, | |
15 |
|
15 | |||
|
16 | Suspending, | |||
|
17 | ||||
|
18 | Suspended, | |||
|
19 | ||||
|
20 | Resuming, | |||
|
21 | ||||
16 | Stopping, |
|
22 | Stopping, | |
17 |
|
23 | |||
18 | Failed, |
|
24 | Failed, |
@@ -180,8 +180,8 namespace Implab { | |||||
180 | /// <param name="cleanup">A callback used to cleanup already resolved promises in case of an error</param> |
|
180 | /// <param name="cleanup">A callback used to cleanup already resolved promises in case of an error</param> | |
181 | /// <returns></returns> |
|
181 | /// <returns></returns> | |
182 | public static IPromise<T[]> PromiseAll<T>(this ICollection<IPromise<T>> that, Action<T> cleanup) { |
|
182 | public static IPromise<T[]> PromiseAll<T>(this ICollection<IPromise<T>> that, Action<T> cleanup) { | |
183 | Safe.ArgumentNotNull(that, "that"); |
|
183 | Safe.ArgumentNotNull(that, "that"); | |
184 |
|
184 | |||
185 | int count = that.Count; |
|
185 | int count = that.Count; | |
186 |
|
186 | |||
187 | if (count == 0) |
|
187 | if (count == 0) | |
@@ -263,6 +263,8 namespace Implab { | |||||
263 |
|
263 | |||
264 | public static IPromise<T2> Then<T, T2>(this IPromise<T> that, Func<T, T2> success, Func<Exception, T2> error, Func<Exception, T2> cancel) { |
|
264 | public static IPromise<T2> Then<T, T2>(this IPromise<T> that, Func<T, T2> success, Func<Exception, T2> error, Func<Exception, T2> cancel) { | |
265 | Safe.ArgumentNotNull(that, "that"); |
|
265 | Safe.ArgumentNotNull(that, "that"); | |
|
266 | Safe.ArgumentNotNull(success, "success"); | |||
|
267 | ||||
266 | var d = new FuncTask<T, T2>(success, error, cancel, false); |
|
268 | var d = new FuncTask<T, T2>(success, error, cancel, false); | |
267 | that.On(d.Resolve, d.Reject, d.CancelOperation); |
|
269 | that.On(d.Resolve, d.Reject, d.CancelOperation); | |
268 | d.CancellationRequested(that.Cancel); |
|
270 | d.CancellationRequested(that.Cancel); | |
@@ -276,8 +278,8 namespace Implab { | |||||
276 | success(x); |
|
278 | success(x); | |
277 | return x; |
|
279 | return x; | |
278 | }, |
|
280 | }, | |
279 |
error, |
|
281 | error, | |
280 |
cancel, |
|
282 | cancel, | |
281 | false |
|
283 | false | |
282 | ); |
|
284 | ); | |
283 | that.On(d.Resolve, d.Reject, d.CancelOperation); |
|
285 | that.On(d.Resolve, d.Reject, d.CancelOperation); | |
@@ -427,6 +429,13 namespace Implab { | |||||
427 |
|
429 | |||
428 | #endregion |
|
430 | #endregion | |
429 |
|
431 | |||
|
432 | public static IPromise<T2> Guard<T, T2>(this IPromise<T> that, Func<IPromise<T>, IPromise<T2>> continuation, Action<T> cleanup) { | |||
|
433 | Safe.ArgumentNotNull(that, "that"); | |||
|
434 | Safe.ArgumentNotNull(continuation, "continuation"); | |||
|
435 | return continuation(that).Error((err) => { | |||
|
436 | that.On(cleanup); | |||
|
437 | }, true); | |||
|
438 | } | |||
430 |
|
439 | |||
431 | #if NET_4_5 |
|
440 | #if NET_4_5 | |
432 |
|
441 | |||
@@ -442,6 +451,24 namespace Implab { | |||||
442 | return new PromiseAwaiter(that); |
|
451 | return new PromiseAwaiter(that); | |
443 | } |
|
452 | } | |
444 |
|
453 | |||
|
454 | public static IPromise BoundCancellationToken(this IPromise that, CancellationToken ct) { | |||
|
455 | Safe.ArgumentNotNull(that, "that"); | |||
|
456 | ct.Register(that.Cancel); | |||
|
457 | return that.Then(null, null, (err) => { | |||
|
458 | ct.ThrowIfCancellationRequested(); | |||
|
459 | throw new PromiseTransientException(err); | |||
|
460 | }); | |||
|
461 | } | |||
|
462 | ||||
|
463 | public static IPromise<T> BoundCancellationToken<T>(this IPromise<T> that, CancellationToken ct) { | |||
|
464 | Safe.ArgumentNotNull(that, "that"); | |||
|
465 | ct.Register(that.Cancel); | |||
|
466 | return that.Then(null, null, (err) => { | |||
|
467 | ct.ThrowIfCancellationRequested(); | |||
|
468 | throw new PromiseTransientException(err); | |||
|
469 | }); | |||
|
470 | } | |||
|
471 | ||||
445 | #endif |
|
472 | #endif | |
446 | } |
|
473 | } | |
447 | } |
|
474 | } |
General Comments 3
ok, latest stable version should be in default
You need to be logged in to leave comments.
Login now