@gaubee/flow
Version:
启发于 kotlin 的 flow,针对 js/ts 开发人员设计的接口,通常可以作为一个事件管理器
46 lines • 1.54 kB
TypeScript
import { PureEvent, PureEventDelegate, type PureEventListenOptions } from "@gaubee/util";
/**
* 个极简的事件监听, 支持异步错误捕捉
* 对流有着极好的支持,支持背压,因此你甚至可以把它当作一个流发射器
*
* @example
* ```ts
* const flow = new SharedFlow<number>();
*
* const off = flow.on((data) => {
* console.log('on data', data)
* })
*
* async function once() {
* flow.once((data) => {
* console.log('once data', data)
* })
* console.log('await once data', await flow.once())
* }
*
* async function emit() {
* for (let i = 0; i < 10; i++) {
* await flow.emit(i);
* }
* }
*
* async function stream() {
* for await (const data of flow) {
* await delay(1000);
* console.log('for await', data);
* }
* }
* ```
*/
export declare class SharedFlow<T> extends PureEventDelegate<T> implements AsyncIterable<T> {
#private;
constructor(by?: PureEvent<T>);
/**
* 将事件以流的方式发出
* 和使用 `for await (const data of flow)` 的方式来隐性触发流监听不同,这里的 stream 函数在调用的时候,就会立刻进行数据监听,因此可以避免一些执行顺序的误会
*/
stream(options?: PureEventListenOptions): AsyncGenerator<Awaited<T>, void, unknown>;
[Symbol.asyncIterator](): AsyncGenerator<Awaited<T>, void, unknown>;
}
export declare const sharedFlow: <T>(by?: any) => SharedFlow<T>;
//# sourceMappingURL=shared_flow.d.ts.map