# HG changeset patch
# User cin
# Date 2014-09-08 13:40:46
# Node ID c4140283575c44b930d3e439d7408564133b2de4
# Parent 3b8393be344193d0aef8699596500f27d5caec65
minor fixes
diff --git a/Implab/IPromise.cs b/Implab/IPromise.cs
--- a/Implab/IPromise.cs
+++ b/Implab/IPromise.cs
@@ -17,20 +17,55 @@ namespace Implab {
///
Type PromiseType { get; }
+ ///
+ /// Обещание является выполненым, либо успешно, либо с ошибкой.
+ ///
bool IsResolved { get; }
+ ///
+ /// Обещание было отменено.
+ ///
bool IsCancelled { get; }
IPromise Then(Action success,ErrorHandler error);
IPromise Then(Action success);
IPromise Error(ErrorHandler error);
+ ///
+ /// Обрабатывает либо ошибку, либо результат. Событие отмены не обрабатывается.
+ ///
+ /// Обработчик.
+ /// После обработке ошибки, она передается дальше.
IPromise Anyway(Action handler);
+
+ ///
+ /// Обрабатывает либо ошибку, либо результат, либо отмену обещания.
+ ///
+ /// Обработчик.
+ /// После обработке ошибки, она передается дальше.
IPromise Finally(Action handler);
+ ///
+ /// Обработчик для регистрации отмены обещания, событие отмены не может быть подавлено.
+ ///
+ /// Новое обещание, связанное с текущим.
+ /// Обработчик события.
+ /// Если обработчик вызывает исключение, то оно передается обработчику ошибки, результат работы
+ /// которого будет передан связанному обещанию
IPromise Cancelled(Action handler);
+ ///
+ /// Преобразует результат обещания к заданному типу и возвращает новое обещание.
+ ///
IPromise Cast();
+ ///
+ /// Синхронизирует текущий поток с обещанием.
+ ///
void Join();
+ ///
+ /// Синхронизирует текущий поток с обещанием.
+ ///
+ /// Время ожидания, по его истечению возникнет исключение.
+ /// Превышено время ожидания.
void Join(int timeout);
}
diff --git a/Implab/Promise.cs b/Implab/Promise.cs
--- a/Implab/Promise.cs
+++ b/Implab/Promise.cs
@@ -447,8 +447,9 @@ namespace Implab {
}
public IPromise Cancelled(Action handler) {
- AddHandler(null, null, handler, null);
- return this;
+ var medium = new Promise(this, true);
+ AddHandler(null, null, handler, medium);
+ return medium;
}
///