Spaces:
Runtime error
Runtime error
/** | |
* The AsyncQueue class used to sequentialize burst requests | |
*/ | |
declare class AsyncQueue { | |
/** | |
* The amount of entries in the queue, including the head. | |
* @seealso {@link queued} for the queued count. | |
*/ | |
get remaining(): number; | |
/** | |
* The amount of queued entries. | |
* @seealso {@link remaining} for the count with the head. | |
*/ | |
get queued(): number; | |
/** | |
* The promises array | |
*/ | |
private promises; | |
/** | |
* Waits for last promise and queues a new one | |
* @example | |
* ```typescript | |
* const queue = new AsyncQueue(); | |
* async function request(url, options) { | |
* await queue.wait({ signal: options.signal }); | |
* try { | |
* const result = await fetch(url, options); | |
* // Do some operations with 'result' | |
* } finally { | |
* // Remove first entry from the queue and resolve for the next entry | |
* queue.shift(); | |
* } | |
* } | |
* | |
* request(someUrl1, someOptions1); // Will call fetch() immediately | |
* request(someUrl2, someOptions2); // Will call fetch() after the first finished | |
* request(someUrl3, someOptions3); // Will call fetch() after the second finished | |
* ``` | |
*/ | |
wait(options?: Readonly<AsyncQueueWaitOptions>): Promise<void>; | |
/** | |
* Unlocks the head lock and transfers the next lock (if any) to the head. | |
*/ | |
shift(): void; | |
/** | |
* Aborts all the pending promises. | |
* @note To avoid race conditions, this does **not** unlock the head lock. | |
*/ | |
abortAll(): void; | |
} | |
interface AsyncQueueWaitOptions { | |
signal?: AbortSignal | undefined | null; | |
} | |
export { AsyncQueue, type AsyncQueueWaitOptions }; | |