static void PromiseTests() { // Promise var promise = new Promise(); promise // ========== Then ========== .Then(delegate () { Console.WriteLine("AAA"); }) // ThenPromise - Resolve .ThenPromise(delegate () { var newPromise = new Promise(); newPromise.Resolve(); return newPromise; }) .Then(delegate () { Console.WriteLine("BBB"); }) // ThenPromise - Reject .ThenPromise(delegate () { var newPromise = new Promise(); newPromise.Reject(new Exception("CCC")); return newPromise; }) .Fail(delegate (Exception error) { Console.WriteLine(error.Message); }) // ========== ThenNew ========== .ThenNew<string>(delegate () { return "DDD"; }) .Then(delegate (string result) { Console.WriteLine(result); }) // ThenNewPromise - Resolve .ThenNewPromise<string>(delegate () { var newPromise = new ResultPromise<string>(); newPromise.Resolve("EEE"); return newPromise; }) .Then(delegate (string result) { Console.WriteLine(result); }) // ThenNewPromise - Reject .ThenNewPromise<string>(delegate () { var newPromise = new ResultPromise<string>(); newPromise.Reject(new Exception("FFF")); return newPromise; }) .Fail(delegate (Exception error) { Console.WriteLine(error.Message); }) // ========== All ========== .ThenNewPromise<List<string>>(delegate () { List<ResultPromise<string>> promiseList = new List<ResultPromise<String>>(); var promiseA = new ResultPromise<string>(); promiseA.Resolve("GGG"); promiseList.Add(promiseA); var promiseB = new ResultPromise<string>(); promiseB.Resolve("HHH"); promiseList.Add(promiseB); return Promise.AllNewPromise<string>(promiseList); }) .Then(delegate (List<string> resultList) { foreach(var result in resultList) { Console.WriteLine(result); } }) // ========== Throw ========== .Then(delegate () { throw new Exception("III"); }) .Fail(delegate (Exception error) { throw error; }) .Fail(delegate (Exception error) { Console.WriteLine(error.Message); }) // ========== End ========== .Progress(delegate (Progress progress) { Console.WriteLine("Progress:" + progress.LocalizedDescription); }) .Fail(delegate (Exception error) { Console.WriteLine("Fail:" + error.Message); }) .Then(delegate () { Console.WriteLine("End"); }) ; // Operate promise.Notify(new Progress("0%", 0, 100)); promise.Notify(new Progress("50%", 50, 100)); promise.Notify(new Progress("100%", 100, 100)); promise.Resolve(); }
// Methods public override ResultPromise <TransportResponse> Send(TransportRequest request) { #region Contracts if (request == null) { throw new ArgumentNullException(); } #endregion // Result ResultPromise <TransportResponse> promise = new ResultPromise <TransportResponse>(); // IsAuthenticated if (_identityContext.CurrentUser.IsAuthenticated() == false) { if (this.IsAllowAnonymous(request) == false) { // Reject promise.Reject(new UnauthorizedException()); // Return return(promise); } } // Send base.Send(request) // Success .Then(delegate(TransportResponse response) { // Resolve promise.Resolve(response); }) // Fail .Fail(delegate(Exception error) { try { // Require if (error is UnauthorizedException) { if (this.IsAllowAnonymous(request) == true) { error = new Exception(error.Message); } } // Reject promise.Reject(error); // Notify if (error is UnauthorizedException) { this.OnUnauthorized(); } } catch (Exception ex) { // Reject promise.Reject(ex); } }); // Return return(promise); }