public static Func <T, IPromise <ControlValue <E> > > Canonical <T, E>(this PromiseFactory factory, Func <T, IPromise <NullableResult <E> > > fn) { return(factory.Canonical <T, E>(x => factory.SafeThen(fn(x), result => { if (result == null || !result.HasResult) { return ControlValue <E> .Next; } return ControlValue <E> .Return(result.Result); }))); }
public If ElseIf(Func <IPromise <ControlValue <bool> > > newCondition) { return(new If(Factory, () => Factory.SafeThen(_condition, check => { if (check == null || check.State != ControlState.Return || !check.HasValue) { return Factory.Value(ControlValue <bool> .Break); } if (check.Value) { return Factory.Value(ControlValue <bool> .Return(false)); } return newCondition(); }))); }
public If <T> ElseIf(Action <Scope <bool> > condition) { return(new If <T>(_owner, block => { block.Return(() => _owner.BeginImmediately(_condition).Finish().Then(result => { if (result == null || result.State != ControlState.Return || !result.HasValue) { return _owner.Factory.Value(result); } if (result.Value) { return _owner.Factory.Value(ControlValue <bool> .Return(false)); } return _owner.BeginImmediately(condition).Finish(); })); })); }
public static Func <T, IPromise <ControlValue <E> > > Canonical <T, E>(this PromiseFactory factory, Func <T, IPromise <E> > fn) { return(factory.Canonical <T, E>(x => factory.SafeThen(fn(x), result => ControlValue <E> .Return(result)))); }
public static Func <IPromise <ControlValue <T> > > Canonical <T>(this PromiseFactory factory, Func <IPromise <T> > fn) { return(factory.Canonical(() => factory.SafeThen(fn, result => ControlValue <T> .Return(result)))); }