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> => {
|
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 () => {
|
return () => {
|
||||||
|
if (error !== notError) {
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
promise ??= fn();
|
promise ??= fn();
|
||||||
return promise;
|
return promise;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -181,7 +181,7 @@ function printStats(stats: TraceResult[]): void {
|
|||||||
const realStart = Math.min(...stats.map(i => i.start));
|
const realStart = Math.min(...stats.map(i => i.start));
|
||||||
const realEnd = Math.max(...stats.map(i => i.end));
|
const realEnd = Math.max(...stats.map(i => i.end));
|
||||||
|
|
||||||
const statsStep = ((realEnd - realStart) / 160) | 0;
|
const statsStep = ((realEnd - realStart) / 120) | 0;
|
||||||
|
|
||||||
stats.forEach(stat => {
|
stats.forEach(stat => {
|
||||||
console.log(
|
console.log(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user