public void Then(Action <TComplition> completion, Action error) { _internalPromise.Then(o => completion((TComplition)o), o => { if (error != null) { error(); } }); }
public void Then(Action completion, Action <TError> error) { _internalPromise.Then(o => completion(), o => { if (error != null) { error((TError)o); } }); }
public static Promise <PromiseAllResult[], PromiseAllResult[]> ThenAll(IPromise[] promises) { int resolveCount = 0; PromiseAllResult[] promiseAllResult = new PromiseAllResult[promises.Length]; Deferred <PromiseAllResult[], PromiseAllResult[]> result = new Deferred <PromiseAllResult[], PromiseAllResult[]>(); Action checkToResolve = () => { if (resolveCount != promises.Length) { return; } if (promiseAllResult.All(result1 => result1.Succeded)) { result.Resolve(promiseAllResult); } else { result.Reject(promiseAllResult); } }; int counter = 0; foreach (IPromise promise in promises) { int index = counter; InternalPromise <object, object> innerPromise = (InternalPromise <object, object>)promise.GetType().GetField("_internalPromise", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(promise); innerPromise.Then(o => { resolveCount++; promiseAllResult[index] = new PromiseAllResult { Result = o, Succeded = true }; checkToResolve(); }, o => { resolveCount++; promiseAllResult[index] = new PromiseAllResult { Result = o, Succeded = false }; checkToResolve(); }); counter++; } return(result.Promise()); }