Mercurial > pub > ImplabNet
comparison Implab/Promise.cs @ 29:768f7deeb55b
Added a casting method for promises.
| author | cin |
|---|---|
| date | Thu, 06 Mar 2014 17:59:03 +0400 |
| parents | 81708975d6f7 |
| children | 2fad2d1f4b03 |
comparison
equal
deleted
inserted
replaced
| 28:81708975d6f7 | 29:768f7deeb55b |
|---|---|
| 9 | 9 |
| 10 public delegate void ErrorHandler(Exception e); | 10 public delegate void ErrorHandler(Exception e); |
| 11 public delegate T ErrorHandler<out T>(Exception e); | 11 public delegate T ErrorHandler<out T>(Exception e); |
| 12 public delegate void ResultHandler<in T>(T result); | 12 public delegate void ResultHandler<in T>(T result); |
| 13 public delegate TNew ResultMapper<in TSrc, out TNew>(TSrc result); | 13 public delegate TNew ResultMapper<in TSrc, out TNew>(TSrc result); |
| 14 public delegate Promise<TNew> ChainedOperation<in TSrc, TNew>(TSrc result); | 14 public delegate Promise<TNew> ChainedOperation<in TSrc,TNew>(TSrc result); |
| 15 | 15 |
| 16 /// <summary> | 16 /// <summary> |
| 17 /// Класс для асинхронного получения результатов. Так называемое "обещание". | 17 /// Класс для асинхронного получения результатов. Так называемое "обещание". |
| 18 /// </summary> | 18 /// </summary> |
| 19 /// <typeparam name="T">Тип получаемого результата</typeparam> | 19 /// <typeparam name="T">Тип получаемого результата</typeparam> |
| 135 get { | 135 get { |
| 136 return m_state == CancelledState; | 136 return m_state == CancelledState; |
| 137 } | 137 } |
| 138 } | 138 } |
| 139 | 139 |
| 140 public Type PromiseType { | |
| 141 get { return typeof(T); } | |
| 142 } | |
| 143 | |
| 140 /// <summary> | 144 /// <summary> |
| 141 /// Выполняет обещание, сообщая об успешном выполнении. | 145 /// Выполняет обещание, сообщая об успешном выполнении. |
| 142 /// </summary> | 146 /// </summary> |
| 143 /// <param name="result">Результат выполнения.</param> | 147 /// <param name="result">Результат выполнения.</param> |
| 144 /// <exception cref="InvalidOperationException">Данное обещание уже выполнено</exception> | 148 /// <exception cref="InvalidOperationException">Данное обещание уже выполнено</exception> |
| 468 x => handler(), | 472 x => handler(), |
| 469 e => handler(), | 473 e => handler(), |
| 470 handler | 474 handler |
| 471 ); | 475 ); |
| 472 return this; | 476 return this; |
| 477 } | |
| 478 | |
| 479 /// <summary> | |
| 480 /// Преобразует результат обещания к нужному типу | |
| 481 /// </summary> | |
| 482 /// <typeparam name="T2"></typeparam> | |
| 483 /// <returns></returns> | |
| 484 public IPromise<T2> Cast<T2>() { | |
| 485 return Map(x => (T2)(object)x, null); | |
| 473 } | 486 } |
| 474 | 487 |
| 475 /// <summary> | 488 /// <summary> |
| 476 /// Дожидается отложенного обещания и в случае успеха, возвращает | 489 /// Дожидается отложенного обещания и в случае успеха, возвращает |
| 477 /// его, результат, в противном случае бросает исключение. | 490 /// его, результат, в противном случае бросает исключение. |
