Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
Harald Wolff | 12e7e8bd10 |
|
@ -34,6 +34,9 @@ namespace ln.threading.tests
|
|||
.Then((value)=>{
|
||||
return value + 1;
|
||||
})
|
||||
.Then((value)=>{
|
||||
value ++;
|
||||
})
|
||||
.Value
|
||||
);
|
||||
|
||||
|
@ -57,6 +60,9 @@ namespace ln.threading.tests
|
|||
.Then((value)=>{
|
||||
return value + 1;
|
||||
})
|
||||
.Then((value)=>{
|
||||
value ++;
|
||||
})
|
||||
.Value
|
||||
);
|
||||
}
|
||||
|
|
|
@ -151,6 +151,55 @@ namespace ln.threading
|
|||
}
|
||||
}
|
||||
|
||||
public Promise<T> Then(Action<T> resolved) => Then(resolved, null);
|
||||
public Promise<T> Then(Action<T> resolved, Func<Exception,T> rejected)
|
||||
{
|
||||
lock (this)
|
||||
{
|
||||
Promise<T> chainedPromise = new Promise<T>();
|
||||
Action resolveAction = ()=>{
|
||||
lock (this)
|
||||
{
|
||||
switch (State)
|
||||
{
|
||||
case PromiseState.PENDING:
|
||||
throw new Exception("serious bug in Promise.Then(..)");
|
||||
case PromiseState.RESOLVED:
|
||||
try{
|
||||
resolved(value);
|
||||
chainedPromise.Resolve(value);
|
||||
} catch (Exception e)
|
||||
{
|
||||
chainedPromise.Reject(e);
|
||||
}
|
||||
break;
|
||||
case PromiseState.REJECTED:
|
||||
if (rejected == null)
|
||||
chainedPromise.Reject(rejectingException);
|
||||
else
|
||||
{
|
||||
try{
|
||||
chainedPromise.Resolve(rejected(rejectingException));
|
||||
} catch (Exception e)
|
||||
{
|
||||
chainedPromise.Reject(e);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (IsSettled)
|
||||
DynamicThreadPool.DefaultPool.Enqueue(resolveAction);
|
||||
else
|
||||
Settled += (p) => resolveAction();
|
||||
|
||||
return chainedPromise;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Promise<T> Catch(Func<Exception,T> rejectedHandler)
|
||||
{
|
||||
lock (this)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<Version>0.2.0</Version>
|
||||
<Version>0.2.1</Version>
|
||||
<Authors>Harald Wolff-Thobaben</Authors>
|
||||
<Company>l--n.de</Company>
|
||||
<Description />
|
||||
|
|
Loading…
Reference in New Issue