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
