deno.land / x / cockatiel@v3.1.2 / src / FallbackPolicy.ts

FallbackPolicy.ts
نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { neverAbortedSignal } from './common/abort';import { ExecuteWrapper } from './common/Executor';import { IDefaultPolicyContext, IPolicy } from './Policy';
export class FallbackPolicy<AltReturn> implements IPolicy<IDefaultPolicyContext, AltReturn> { declare readonly _altReturn: AltReturn;
/** * @inheritdoc */ public readonly onSuccess = this.executor.onSuccess;
/** * @inheritdoc */ public readonly onFailure = this.executor.onFailure;
constructor(private readonly executor: ExecuteWrapper, private readonly value: () => AltReturn) {}
/** * Executes the given function. * @param fn Function to execute. * @returns The function result or fallback value. */ public async execute<T>( fn: (context: IDefaultPolicyContext) => PromiseLike<T> | T, signal = neverAbortedSignal, ): Promise<T | AltReturn> { const result = await this.executor.invoke(fn, { signal }); if ('success' in result) { return result.success; }
return this.value(); }}
cockatiel

Version Info

Tagged at
5 months ago