##// END OF EJS Templates
Added a casting method for promises.
cin -
r29:768f7deeb55b default
parent child
Show More
@@ -12,6 +12,11 namespace Implab {
12 12 get;
13 13 }
14 14
15 /// <summary>
16 /// Тип результата, получаемого через данное обещание.
17 /// </summary>
18 Type PromiseType { get; }
19
15 20 bool IsResolved { get; }
16 21
17 22 bool IsCancelled { get; }
@@ -19,5 +24,7 namespace Implab {
19 24 IPromiseBase Then(Action success,ErrorHandler error);
20 25 IPromiseBase Then(Action success);
21 26
27 IPromise<T> Cast<T>();
28
22 29 }
23 30 }
@@ -11,7 +11,7 namespace Implab {
11 11 public delegate T ErrorHandler<out T>(Exception e);
12 12 public delegate void ResultHandler<in T>(T result);
13 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 16 /// <summary>
17 17 /// Класс для асинхронного получения результатов. Так называемое "обещание".
@@ -137,6 +137,10 namespace Implab {
137 137 }
138 138 }
139 139
140 public Type PromiseType {
141 get { return typeof(T); }
142 }
143
140 144 /// <summary>
141 145 /// Выполняет обещание, сообщая об успешном выполнении.
142 146 /// </summary>
@@ -473,6 +477,15 namespace Implab {
473 477 }
474 478
475 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);
486 }
487
488 /// <summary>
476 489 /// Дожидается отложенного обещания и в случае успеха, возвращает
477 490 /// его, результат, в противном случае бросает исключение.
478 491 /// </summary>
General Comments 0
You need to be logged in to leave comments. Login now