function createAsyncThrottler<TFn>(fn, initialOptions): SolidAsyncThrottler<TFn>
function createAsyncThrottler<TFn>(fn, initialOptions): SolidAsyncThrottler<TFn>
定义于:async-throttler/createAsyncThrottler.ts:80
一个低级别的 Solid 钩子,用于创建一个 AsyncThrottler 实例,以限制异步函数的执行频率。
此钩子设计灵活且与状态管理无关——它仅返回一个节流器实例,您可以将其与任何状态管理解决方案(createSignal 等)集成。
异步节流确保异步函数在指定的时间窗口内最多执行一次, 无论它被调用多少次。这对于限制昂贵的 API 调用非常有用, 数据库操作或其他异步任务。
与非异步 Throttler 不同,此异步版本支持从节流函数返回值, 使其非常适合 API 调用和其他异步操作,在这些操作中,您希望获得 maybeExecute 调用的结果 而不是在节流函数内部设置状态变量的结果。
错误处理:
• TFn extends AnyAsyncFunction
TFn
AsyncThrottlerOptions<TFn>
SolidAsyncThrottler<TFn>
// 基本 API 调用节流
const { maybeExecute } = createAsyncThrottler(
async (id: string) => {
const data = await api.fetchData(id);
return data;
},
{ wait: 1000 }
);
// 结合状态管理
const [data, setData] = createSignal(null);
const { maybeExecute } = createAsyncThrottler(
async (query) => {
const result = await searchAPI(query);
setData(result);
},
{
wait: 2000,
leading: true, // 首次调用立即执行
trailing: false, // 跳过尾随边缘更新
onError: (error) => {
console.error('API 调用失败:', error);
}
}
);
// 基本 API 调用节流
const { maybeExecute } = createAsyncThrottler(
async (id: string) => {
const data = await api.fetchData(id);
return data;
},
{ wait: 1000 }
);
// 结合状态管理
const [data, setData] = createSignal(null);
const { maybeExecute } = createAsyncThrottler(
async (query) => {
const result = await searchAPI(query);
setData(result);
},
{
wait: 2000,
leading: true, // 首次调用立即执行
trailing: false, // 跳过尾随边缘更新
onError: (error) => {
console.error('API 调用失败:', error);
}
}
);