Mercurial > pub > ImplabNet
comparison Implab/Safe.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 | bdfdba6b645b |
| children | 7c7e9ad6fe4a |
comparison
equal
deleted
inserted
replaced
| 247:fb70574741a1 | 248:5cb4826c2c2a |
|---|---|
| 110 [DebuggerStepThrough] | 110 [DebuggerStepThrough] |
| 111 public static IPromise<T> Run<T>(Func<T> action) { | 111 public static IPromise<T> Run<T>(Func<T> action) { |
| 112 ArgumentNotNull(action, "action"); | 112 ArgumentNotNull(action, "action"); |
| 113 | 113 |
| 114 try { | 114 try { |
| 115 return Promise<T>.FromResult(action()); | 115 return Promise.Resolve(action()); |
| 116 } catch (Exception err) { | 116 } catch (Exception err) { |
| 117 return Promise<T>.FromException(err); | 117 return Promise.Reject<T>(err); |
| 118 } | 118 } |
| 119 } | 119 } |
| 120 | 120 |
| 121 [DebuggerStepThrough] | 121 [DebuggerStepThrough] |
| 122 public static IPromise Run(Action action) { | 122 public static IPromise Run(Action action) { |
| 123 ArgumentNotNull(action, "action"); | 123 ArgumentNotNull(action, "action"); |
| 124 | 124 |
| 125 try { | 125 try { |
| 126 action(); | 126 action(); |
| 127 return Promise.Success; | 127 return Promise.Resolve(); |
| 128 } catch (Exception err) { | 128 } catch (Exception err) { |
| 129 return new FailedPromise(err); | 129 return Promise.Reject(err); |
| 130 } | 130 } |
| 131 } | 131 } |
| 132 | 132 |
| 133 [DebuggerStepThrough] | 133 [DebuggerStepThrough] |
| 134 public static IPromise Run(Func<IPromise> action) { | 134 public static IPromise Run(Func<IPromise> action) { |
| 135 ArgumentNotNull(action, "action"); | 135 ArgumentNotNull(action, "action"); |
| 136 | 136 |
| 137 try { | 137 try { |
| 138 return action() ?? new FailedPromise(new Exception("The action returned null")); | 138 return action() ?? Promise.Reject(new Exception("The action returned null")); |
| 139 } catch (Exception err) { | 139 } catch (Exception err) { |
| 140 return new FailedPromise(err); | 140 return Promise.Reject(err); |
| 141 } | 141 } |
| 142 } | 142 } |
| 143 | 143 |
| 144 public static void NoWait(IPromise promise) { | 144 public static void NoWait(IPromise promise) { |
| 145 } | 145 } |
| 147 [DebuggerStepThrough] | 147 [DebuggerStepThrough] |
| 148 public static IPromise<T> Run<T>(Func<IPromise<T>> action) { | 148 public static IPromise<T> Run<T>(Func<IPromise<T>> action) { |
| 149 ArgumentNotNull(action, "action"); | 149 ArgumentNotNull(action, "action"); |
| 150 | 150 |
| 151 try { | 151 try { |
| 152 return action() ?? Promise<T>.FromException(new Exception("The action returned null")); | 152 return action() ?? Promise.Reject<T>(new Exception("The action returned null")); |
| 153 } catch (Exception err) { | 153 } catch (Exception err) { |
| 154 return Promise<T>.FromException(err); | 154 return Promise.Reject<T>(err); |
| 155 } | 155 } |
| 156 } | 156 } |
| 157 | 157 |
| 158 #if NET_4_5 | 158 #if NET_4_5 |
| 159 public static void NoWait(Task t) { | 159 public static void NoWait(Task t) { |
