fix: promises

This commit is contained in:
MARCROCK22 2024-04-07 16:57:54 -04:00
parent 2cfb4b951b
commit f91968caef
5 changed files with 20 additions and 57 deletions

View File

@ -80,17 +80,10 @@ export class ApiHandler {
?.filter(x => !['string', 'boolean', 'number'].includes(typeof x.data)) ?.filter(x => !['string', 'boolean', 'number'].includes(typeof x.data))
.map(x => x.data as Buffer | Uint8Array), .map(x => x.data as Buffer | Uint8Array),
); );
let resolve = (_value: T) => {};
let reject = () => {};
const promise = new Promise<T>((res, rej) => { return new Promise<T>((res, rej) => {
resolve = res; this.workerPromises!.set(nonce, { reject: rej, resolve: res });
reject = rej;
}); });
this.workerPromises!.set(nonce, { reject, resolve });
return promise;
} }
const route = request.route || this.routefy(url, method); const route = request.route || this.routefy(url, method);
let attempts = 0; let attempts = 0;

View File

@ -27,22 +27,13 @@ export class WorkerAdapter implements Adapter {
workerId: this.workerData.workerId, workerId: this.workerData.workerId,
} satisfies WorkerSendCacheRequest); } satisfies WorkerSendCacheRequest);
let resolve = (_: any) => { return new Promise<any>((res, rej) => {
/**/ const timeout = setTimeout(() => {
};
let timeout = -1 as unknown as NodeJS.Timeout;
const promise = new Promise<any>((res, rej) => {
resolve = res;
timeout = setTimeout(() => {
this.promises.delete(nonce); this.promises.delete(nonce);
rej(new Error('Timeout cache request')); rej(new Error('Timeout cache request'));
}, 60e3); }, 60e3);
this.promises.set(nonce, { resolve: res, timeout });
}); });
this.promises.set(nonce, { resolve, timeout });
return promise;
} }
scan(...rest: any[]) { scan(...rest: any[]) {

View File

@ -284,22 +284,13 @@ export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
} }
private generateSendPromise<T = unknown>(nonce: string, message = 'Timeout'): Promise<T> { private generateSendPromise<T = unknown>(nonce: string, message = 'Timeout'): Promise<T> {
let resolve = (_: T) => { return new Promise<T>((res, rej) => {
/**/ const timeout = setTimeout(() => {
};
let timeout = -1 as unknown as NodeJS.Timeout;
const promise = new Promise<T>((res, rej) => {
resolve = res;
timeout = setTimeout(() => {
this.promises.delete(nonce); this.promises.delete(nonce);
rej(new Error(message)); rej(new Error(message));
}, 60e3); }, 60e3);
this.promises.set(nonce, { resolve: res, timeout });
}); });
this.promises.set(nonce, { resolve, timeout });
return promise;
} }
tellWorker(workerId: number, func: (_: this) => {}) { tellWorker(workerId: number, func: (_: this) => {}) {

View File

@ -338,22 +338,13 @@ export class WorkerManager extends Map<number, (ClusterWorker | ThreadWorker) &
} }
private generateSendPromise<T = unknown>(nonce: string, message = 'Timeout'): Promise<T> { private generateSendPromise<T = unknown>(nonce: string, message = 'Timeout'): Promise<T> {
let resolve = (_: T) => { return new Promise<T>((res, rej) => {
/**/ const timeout = setTimeout(() => {
};
let timeout = -1 as unknown as NodeJS.Timeout;
const promise = new Promise<T>((res, rej) => {
resolve = res;
timeout = setTimeout(() => {
this.promises.delete(nonce); this.promises.delete(nonce);
rej(new Error(message)); rej(new Error(message));
}, 60e3); }, 60e3);
this.promises.set(nonce, { resolve: res, timeout });
}); });
this.promises.set(nonce, { resolve, timeout });
return promise;
} }
async send(data: GatewaySendPayload, shardId: number) { async send(data: GatewaySendPayload, shardId: number) {

View File

@ -4,18 +4,15 @@ export class ConnectTimeout {
constructor(public intervalTime = 5000) {} constructor(public intervalTime = 5000) {}
wait() { wait() {
let resolve = (_x: boolean) => { return new Promise<boolean>(res => {
//
};
const promise = new Promise<boolean>(r => (resolve = r));
if (!this.promises.length) { if (!this.promises.length) {
this.interval = setInterval(() => { this.interval = setInterval(() => {
this.shift(); this.shift();
}, this.intervalTime); }, this.intervalTime);
resolve(true); res(true);
} }
this.promises.push(resolve); this.promises.push(res);
return promise; });
} }
shift() { shift() {