Mercurial > pub > ImplabNet
view Implab/PromiseReaction`1.cs @ 248:5cb4826c2c2a v3
Added awaiters to promises
Added static methods to Promise Resolve, Reject, All.
Updated promise helpers
author | cin |
---|---|
date | Tue, 30 Jan 2018 01:37:17 +0300 |
parents | fb70574741a1 |
children |
line wrap: on
line source
using System; namespace Implab { /// <summary> /// Базовыйй класс для создания обработчиков результов выполнения обещаний. /// Данный объект связывает обработчик и обешание, при этом для выполнения /// обработчика будет использоваться диспетчер. /// </summary> abstract class PromiseReaction<T> : IResolvable<T> { readonly IDispatcher m_dispatcher; protected PromiseReaction(IDispatcher dispatcher) { m_dispatcher = dispatcher; } protected Action<T> FulfilHandler { get; set; } protected Action<Exception> RejectHandler { get; set; } public void Reject(Exception error) { if (RejectHandler == null) DefaultReject(error); else if (m_dispatcher != null) m_dispatcher.Enqueue(RejectHandler, error); else RejectHandler(error); } public void Resolve(T result) { if (FulfilHandler == null) DefaultResolve(result); else if (m_dispatcher != null) m_dispatcher.Enqueue(FulfilHandler, result); else FulfilHandler(result); } protected abstract void DefaultResolve(T result); protected abstract void DefaultReject(Exception reason); } }