@mt-kit/utils
Version:
24 lines (23 loc) • 892 B
TypeScript
/**
* 消息队列
* 支持两种模式:
* 1. 串行模式:按顺序执行,一个完成后再执行下一个
* 2. 持续防抖模式:一段时间内有新请求就取消前面的,只保留最后一个,且只有在最后一次请求结束后的一段时间内没有新请求,才真正执行
*/
interface IQueueOptions {
key?: string;
/**
* 防抖时间 (毫秒)
* 如果为 true,默认为 300ms
* 如果为 false 或 undefined,则为普通串行队列
* 如果有值,则开启防抖模式:在该时间内有新请求进入,会取消上一个请求,重新计时。
*/
duration?: boolean | number;
}
/**
* 队列请求方法
* @param fn 数据请求函数
* @param options 配置项 (包含 key, duration)
*/
export default function queue<T = unknown>(fn: () => Promise<T>, options?: IQueueOptions): Promise<T>;
export {};