prex-es5
Version:
Async coordination primitives and extensions on top of ES6 Promises
38 lines (36 loc) • 1.36 kB
TypeScript
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Licensed under the Apache License, Version 2.0.
See LICENSE file in the project root for details.
***************************************************************************** */
/**
* An asynchronous queue.
*/
export declare class AsyncQueue<T> {
private _available;
private _pending;
/**
* Initializes a new instance of the AsyncQueue class.
*
* @param iterable An optional iterable of values or promises.
*/
constructor(iterable?: Iterable<T | PromiseLike<T>>);
/**
* Gets the number of entries in the queue.
* When positive, indicates the number of entries available to get.
* When negative, indicates the number of requests waiting to be fulfilled.
*/
readonly size: number;
/**
* Adds a value to the end of the queue. If the queue is empty but has a pending
* dequeue request, the value will be dequeued and the request fulfilled.
*
* @param value A value or promise to add to the queue.
*/
put(value: T | PromiseLike<T>): void;
/**
* Removes and returns a Promise for the first value in the queue. If the queue is empty,
* returns a Promise for the next value to be added to the queue.
*/
get(): Promise<T>;
}