Mercurial > pub > ImplabNet
comparison Implab/PromiseExtensions.cs @ 249:d82909310094 v3
Implab.Test moved to xunit
Complete set of PromiseHelpers (Then, Catch, Finally)
Removed obsolete types ICancellable, ICancellationToken
author | cin |
---|---|
date | Wed, 31 Jan 2018 11:28:38 +0300 |
parents | 5cb4826c2c2a |
children | 7d52dc684bbd |
comparison
equal
deleted
inserted
replaced
248:5cb4826c2c2a | 249:d82909310094 |
---|---|
6 | 6 |
7 namespace Implab { | 7 namespace Implab { |
8 public static class PromiseExtensions { | 8 public static class PromiseExtensions { |
9 | 9 |
10 public static IPromise Then(this IPromise that, Action fulfilled, Action<Exception> rejected) { | 10 public static IPromise Then(this IPromise that, Action fulfilled, Action<Exception> rejected) { |
11 var reaction = new PromiseActionReaction(fulfilled, rejected, Promise.DefaultDispatcher); | 11 var reaction = PromiseActionReaction.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
12 that.Then(reaction); | |
13 return reaction.Promise; | |
14 } | |
15 | |
16 public static IPromise Then(this IPromise that, Action fulfilled) { | |
17 var reaction = PromiseActionReaction.Create(fulfilled, null, Promise.DefaultDispatcher); | |
12 that.Then(reaction); | 18 that.Then(reaction); |
13 return reaction.Promise; | 19 return reaction.Promise; |
14 } | 20 } |
15 | 21 |
16 public static IPromise Then(this IPromise that, Action fulfilled, Func<Exception, IPromise> rejected) { | 22 public static IPromise Then(this IPromise that, Action fulfilled, Func<Exception, IPromise> rejected) { |
17 var reaction = new PromiseActionReaction(fulfilled, rejected, Promise.DefaultDispatcher); | 23 var reaction = PromiseActionReaction.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
18 that.Then(reaction); | 24 that.Then(reaction); |
19 return reaction.Promise; | 25 return reaction.Promise; |
20 } | 26 } |
21 | 27 |
22 public static IPromise Then(this IPromise that, Func<IPromise> fulfilled, Action<Exception> rejected) { | 28 public static IPromise Then(this IPromise that, Func<IPromise> fulfilled, Action<Exception> rejected) { |
23 var reaction = new PromiseActionReaction(fulfilled, rejected, Promise.DefaultDispatcher); | 29 var reaction = PromiseActionReaction.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
30 that.Then(reaction); | |
31 return reaction.Promise; | |
32 } | |
33 | |
34 public static IPromise Then(this IPromise that, Func<IPromise> fulfilled) { | |
35 var reaction = PromiseActionReaction.Create(fulfilled, null, Promise.DefaultDispatcher); | |
24 that.Then(reaction); | 36 that.Then(reaction); |
25 return reaction.Promise; | 37 return reaction.Promise; |
26 } | 38 } |
27 | 39 |
28 public static IPromise Then(this IPromise that, Func<IPromise> fulfilled, Func<Exception, IPromise> rejected) { | 40 public static IPromise Then(this IPromise that, Func<IPromise> fulfilled, Func<Exception, IPromise> rejected) { |
29 var reaction = new PromiseActionReaction(fulfilled, rejected, Promise.DefaultDispatcher); | 41 var reaction = PromiseActionReaction.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
30 that.Then(reaction); | 42 that.Then(reaction); |
31 return reaction.Promise; | 43 return reaction.Promise; |
32 } | 44 } |
33 | 45 |
34 public static IPromise Then<T>(this IPromise<T> that, Action<T> fulfilled, Action<Exception> rejected) { | 46 public static IPromise Then<T>(this IPromise<T> that, Action<T> fulfilled, Action<Exception> rejected) { |
35 var reaction = new PromiseActionReaction<T>(fulfilled, rejected, Promise.DefaultDispatcher); | 47 var reaction = PromiseActionReaction<T>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
48 that.Then(reaction); | |
49 return reaction.Promise; | |
50 } | |
51 | |
52 public static IPromise Then<T>(this IPromise<T> that, Action<T> fulfilled) { | |
53 var reaction = PromiseActionReaction<T>.Create(fulfilled, null, Promise.DefaultDispatcher); | |
36 that.Then(reaction); | 54 that.Then(reaction); |
37 return reaction.Promise; | 55 return reaction.Promise; |
38 } | 56 } |
39 | 57 |
40 public static IPromise Then<T>(this IPromise<T> that, Action<T> fulfilled, Func<Exception, IPromise> rejected) { | 58 public static IPromise Then<T>(this IPromise<T> that, Action<T> fulfilled, Func<Exception, IPromise> rejected) { |
41 var reaction = new PromiseActionReaction<T>(fulfilled, rejected, Promise.DefaultDispatcher); | 59 var reaction = PromiseActionReaction<T>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
42 that.Then(reaction); | 60 that.Then(reaction); |
43 return reaction.Promise; | 61 return reaction.Promise; |
44 } | 62 } |
45 | 63 |
46 public static IPromise Then<T>(this IPromise<T> that, Func<T, IPromise> fulfilled, Action<Exception> rejected) { | 64 public static IPromise Then<T>(this IPromise<T> that, Func<T, IPromise> fulfilled, Action<Exception> rejected) { |
47 var reaction = new PromiseActionReaction<T>(fulfilled, rejected, Promise.DefaultDispatcher); | 65 var reaction = PromiseActionReaction<T>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
66 that.Then(reaction); | |
67 return reaction.Promise; | |
68 } | |
69 | |
70 public static IPromise Then<T>(this IPromise<T> that, Func<T, IPromise> fulfilled) { | |
71 var reaction = PromiseActionReaction<T>.Create(fulfilled, null, Promise.DefaultDispatcher); | |
48 that.Then(reaction); | 72 that.Then(reaction); |
49 return reaction.Promise; | 73 return reaction.Promise; |
50 } | 74 } |
51 | 75 |
52 public static IPromise Then<T>(this IPromise<T> that, Func<T, IPromise> fulfilled, Func<Exception, IPromise> rejected) { | 76 public static IPromise Then<T>(this IPromise<T> that, Func<T, IPromise> fulfilled, Func<Exception, IPromise> rejected) { |
53 var reaction = new PromiseActionReaction<T>(fulfilled, rejected, Promise.DefaultDispatcher); | 77 var reaction = PromiseActionReaction<T>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
54 that.Then(reaction); | 78 that.Then(reaction); |
55 return reaction.Promise; | 79 return reaction.Promise; |
56 } | 80 } |
57 | 81 |
58 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<Tout> fulfilled, Func<Exception, Tout> rejected) { | 82 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<Tout> fulfilled, Func<Exception, Tout> rejected) { |
59 var reaction = new PromiseFuncReaction<Tout>(fulfilled, rejected, Promise.DefaultDispatcher); | 83 var reaction = PromiseFuncReaction<Tout>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
84 that.Then(reaction); | |
85 return reaction.Promise; | |
86 } | |
87 | |
88 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<Tout> fulfilled) { | |
89 var reaction = PromiseFuncReaction<Tout>.Create(fulfilled, (Func<Exception, Tout>)null, Promise.DefaultDispatcher); | |
60 that.Then(reaction); | 90 that.Then(reaction); |
61 return reaction.Promise; | 91 return reaction.Promise; |
62 } | 92 } |
63 | 93 |
64 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<Tout> fulfilled, Func<Exception, IPromise<Tout>> rejected) { | 94 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<Tout> fulfilled, Func<Exception, IPromise<Tout>> rejected) { |
65 var reaction = new PromiseFuncReaction<Tout>(fulfilled, rejected, Promise.DefaultDispatcher); | 95 var reaction = PromiseFuncReaction<Tout>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
66 that.Then(reaction); | 96 that.Then(reaction); |
67 return reaction.Promise; | 97 return reaction.Promise; |
68 } | 98 } |
69 | 99 |
70 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<IPromise<Tout>> fulfilled, Func<Exception, Tout> rejected) { | 100 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<IPromise<Tout>> fulfilled, Func<Exception, Tout> rejected) { |
71 var reaction = new PromiseFuncReaction<Tout>(fulfilled, rejected, Promise.DefaultDispatcher); | 101 var reaction = PromiseFuncReaction<Tout>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
102 that.Then(reaction); | |
103 return reaction.Promise; | |
104 } | |
105 | |
106 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<IPromise<Tout>> fulfilled) { | |
107 var reaction = PromiseFuncReaction<Tout>.Create(fulfilled, (Func<Exception, Tout>)null, Promise.DefaultDispatcher); | |
72 that.Then(reaction); | 108 that.Then(reaction); |
73 return reaction.Promise; | 109 return reaction.Promise; |
74 } | 110 } |
75 | 111 |
76 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<IPromise<Tout>> fulfilled, Func<Exception, IPromise<Tout>> rejected) { | 112 public static IPromise<Tout> Then<Tout>(this IPromise that, Func<IPromise<Tout>> fulfilled, Func<Exception, IPromise<Tout>> rejected) { |
77 var reaction = new PromiseFuncReaction<Tout>(fulfilled, rejected, Promise.DefaultDispatcher); | 113 var reaction = PromiseFuncReaction<Tout>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
78 that.Then(reaction); | 114 that.Then(reaction); |
79 return reaction.Promise; | 115 return reaction.Promise; |
80 } | 116 } |
81 | 117 |
82 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, Tout> fulfilled, Func<Exception, Tout> rejected) { | 118 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, Tout> fulfilled, Func<Exception, Tout> rejected) { |
83 var reaction = new PromiseFuncReaction<Tin, Tout>(fulfilled, rejected, Promise.DefaultDispatcher); | 119 var reaction = PromiseFuncReaction<Tin, Tout>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
120 that.Then(reaction); | |
121 return reaction.Promise; | |
122 } | |
123 | |
124 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, Tout> fulfilled) { | |
125 var reaction = PromiseFuncReaction<Tin, Tout>.Create(fulfilled, (Func<Exception, Tout>)null, Promise.DefaultDispatcher); | |
84 that.Then(reaction); | 126 that.Then(reaction); |
85 return reaction.Promise; | 127 return reaction.Promise; |
86 } | 128 } |
87 | 129 |
88 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, Tout> fulfilled, Func<Exception, IPromise<Tout>> rejected) { | 130 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, Tout> fulfilled, Func<Exception, IPromise<Tout>> rejected) { |
89 var reaction = new PromiseFuncReaction<Tin, Tout>(fulfilled, rejected, Promise.DefaultDispatcher); | 131 var reaction = PromiseFuncReaction<Tin, Tout>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
90 that.Then(reaction); | 132 that.Then(reaction); |
91 return reaction.Promise; | 133 return reaction.Promise; |
92 } | 134 } |
93 | 135 |
94 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, IPromise<Tout>> fulfilled, Func<Exception, Tout> rejected) { | 136 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, IPromise<Tout>> fulfilled, Func<Exception, Tout> rejected) { |
95 var reaction = new PromiseFuncReaction<Tin, Tout>(fulfilled, rejected, Promise.DefaultDispatcher); | 137 var reaction = PromiseFuncReaction<Tin, Tout>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
138 that.Then(reaction); | |
139 return reaction.Promise; | |
140 } | |
141 | |
142 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, IPromise<Tout>> fulfilled) { | |
143 var reaction = PromiseFuncReaction<Tin, Tout>.Create(fulfilled, (Func<Exception, Tout>)null, Promise.DefaultDispatcher); | |
96 that.Then(reaction); | 144 that.Then(reaction); |
97 return reaction.Promise; | 145 return reaction.Promise; |
98 } | 146 } |
99 | 147 |
100 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, IPromise<Tout>> fulfilled, Func<Exception, IPromise<Tout>> rejected) { | 148 public static IPromise<Tout> Then<Tin, Tout>(this IPromise<Tin> that, Func<Tin, IPromise<Tout>> fulfilled, Func<Exception, IPromise<Tout>> rejected) { |
101 var reaction = new PromiseFuncReaction<Tin, Tout>(fulfilled, rejected, Promise.DefaultDispatcher); | 149 var reaction = PromiseFuncReaction<Tin, Tout>.Create(fulfilled, rejected, Promise.DefaultDispatcher); |
102 that.Then(reaction); | 150 that.Then(reaction); |
103 return reaction.Promise; | 151 return reaction.Promise; |
104 } | 152 } |
105 | 153 |
106 public static IPromise Catch(this IPromise that, Action<Exception> rejected) { | 154 public static IPromise Catch(this IPromise that, Action<Exception> rejected) { |
124 } | 172 } |
125 | 173 |
126 public static IPromise<Tout> Catch<Tin, Tout>(this IPromise<Tin> that, Func<Exception, IPromise<Tout>> rejected) { | 174 public static IPromise<Tout> Catch<Tin, Tout>(this IPromise<Tin> that, Func<Exception, IPromise<Tout>> rejected) { |
127 return Then(that, (Func<Tin, Tout>)null, rejected); | 175 return Then(that, (Func<Tin, Tout>)null, rejected); |
128 } | 176 } |
177 | |
178 public static IPromise Finally(this IPromise that, Action final) { | |
179 return Then(that, final, e => { | |
180 final(); | |
181 throw e.Rethrow(); | |
182 }); | |
183 } | |
184 | |
185 public static IPromise Finally(this IPromise that, Func<IPromise> final) { | |
186 return Then(that, final, e => { | |
187 final(); | |
188 throw e.Rethrow(); | |
189 }); | |
190 } | |
191 | |
192 public static IPromise<T> Finally<T>(this IPromise<T> that, Action final) { | |
193 return Then<T, T>(that, x => { | |
194 final(); | |
195 return x; | |
196 }, new Func<Exception, T>(e => { | |
197 final(); | |
198 throw e.Rethrow(); | |
199 })); | |
200 } | |
201 | |
202 public static IPromise<T> Finally<T>(this IPromise<T> that, Func<IPromise> final) { | |
203 return Then<T, T>(that, x => { | |
204 return final() | |
205 .Then(() => x); | |
206 }, new Func<Exception, IPromise<T>>(e => { | |
207 return final() | |
208 .Then(new Func<T>(() => { | |
209 throw e.Rethrow(); | |
210 })); | |
211 })); | |
212 } | |
213 | |
214 | |
129 } | 215 } |
130 } | 216 } |
131 | 217 |