mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-12 01:00:34 +08:00
Fix/CI: float promise error handling / log wrap
This commit is contained in:
parent
df6bbb68a0
commit
10bde9f1e8
@ -1,7 +1,21 @@
|
||||
const notError = Symbol('notError');
|
||||
|
||||
export const createMemoizedPromise = <T>(fn: () => Promise<T>, preload = true): () => Promise<T> => {
|
||||
let promise: Promise<T> | null = preload ? fn() : null;
|
||||
let error: Error | typeof notError = notError;
|
||||
|
||||
let promise: Promise<T> | null = preload
|
||||
? fn().catch(e => {
|
||||
// Here we record the error so that we can throw it later when the function is called
|
||||
error = e;
|
||||
// Here we make sure the Promise still returns the never type
|
||||
throw e;
|
||||
})
|
||||
: null;
|
||||
|
||||
return () => {
|
||||
if (error !== notError) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
promise ??= fn();
|
||||
return promise;
|
||||
};
|
||||
|
||||
@ -181,7 +181,7 @@ function printStats(stats: TraceResult[]): void {
|
||||
const realStart = Math.min(...stats.map(i => i.start));
|
||||
const realEnd = Math.max(...stats.map(i => i.end));
|
||||
|
||||
const statsStep = ((realEnd - realStart) / 160) | 0;
|
||||
const statsStep = ((realEnd - realStart) / 120) | 0;
|
||||
|
||||
stats.forEach(stat => {
|
||||
console.log(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user