Mercurial > pub > ImplabNet
changeset 74:c4140283575c v2
minor fixes
author | cin |
---|---|
date | Mon, 08 Sep 2014 17:40:46 +0400 |
parents | 3b8393be3441 |
children | 4439140706d0 |
files | Implab/IPromise.cs Implab/Promise.cs |
diffstat | 2 files changed, 38 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/Implab/IPromise.cs Fri Sep 05 00:27:14 2014 +0400 +++ b/Implab/IPromise.cs Mon Sep 08 17:40:46 2014 +0400 @@ -17,20 +17,55 @@ /// </summary> Type PromiseType { get; } + /// <summary> + /// Обещание является выполненым, либо успешно, либо с ошибкой. + /// </summary> bool IsResolved { get; } + /// <summary> + /// Обещание было отменено. + /// </summary> bool IsCancelled { get; } IPromise Then(Action success,ErrorHandler error); IPromise Then(Action success); IPromise Error(ErrorHandler error); + /// <summary> + /// Обрабатывает либо ошибку, либо результат. Событие отмены не обрабатывается. + /// </summary> + /// <param name="handler">Обработчик.</param> + /// <remarks>После обработке ошибки, она передается дальше.</remarks> IPromise Anyway(Action handler); + + /// <summary> + /// Обрабатывает либо ошибку, либо результат, либо отмену обещания. + /// </summary> + /// <param name="handler">Обработчик.</param> + /// <remarks>После обработке ошибки, она передается дальше.</remarks> IPromise Finally(Action handler); + /// <summary> + /// Обработчик для регистрации отмены обещания, событие отмены не может быть подавлено. + /// </summary> + /// <returns>Новое обещание, связанное с текущим.</returns> + /// <param name="handler">Обработчик события.</param> + /// <remarks>Если обработчик вызывает исключение, то оно передается обработчику ошибки, результат работы + /// которого будет передан связанному обещанию</remarks> IPromise Cancelled(Action handler); + /// <summary> + /// Преобразует результат обещания к заданному типу и возвращает новое обещание. + /// </summary> IPromise<T> Cast<T>(); + /// <summary> + /// Синхронизирует текущий поток с обещанием. + /// </summary> void Join(); + /// <summary> + /// Синхронизирует текущий поток с обещанием. + /// </summary> + /// <param name="timeout">Время ожидания, по его истечению возникнет исключение.</param> + /// <exception cref="TimeoutException">Превышено время ожидания.</exception> void Join(int timeout); }
--- a/Implab/Promise.cs Fri Sep 05 00:27:14 2014 +0400 +++ b/Implab/Promise.cs Mon Sep 08 17:40:46 2014 +0400 @@ -447,8 +447,9 @@ } public IPromise<T> Cancelled(Action handler) { - AddHandler(null, null, handler, null); - return this; + var medium = new Promise<T>(this, true); + AddHandler(null, null, handler, medium); + return medium; } /// <summary>