function createAsyncDebouncer<TFn>(fn, initialOptions): SolidAsyncDebouncer<TFn>
function createAsyncDebouncer<TFn>(fn, initialOptions): SolidAsyncDebouncer<TFn>
定义于:async-debouncer/createAsyncDebouncer.ts:77
一个低级别的 Solid 钩子,用于创建一个 AsyncDebouncer 实例来延迟异步函数的执行。
此钩子设计灵活且与状态管理无关——它仅返回一个防抖器实例,您可以将其与任何状态管理解决方案(createSignal 等)集成。
异步防抖确保异步函数仅在其最后一次调用后经过指定的延迟后才执行。 每次新的调用都会重置延迟计时器。这对于处理频繁事件(如窗口大小调整)非常有用 或输入更改,您只想在事件停止发生后执行处理程序。
与节流(允许定期执行)不同,防抖会阻止任何执行,直到 函数在指定的延迟期内停止被调用。
与非异步 Debouncer 不同,此异步版本支持从防抖函数返回值, 使其非常适合 API 调用和其他异步操作,在这些操作中,您希望获得 maybeExecute 调用的结果 而不是在防抖函数内部设置状态变量的结果。
错误处理:
• TFn extends AnyAsyncFunction
TFn
AsyncDebouncerOptions<TFn>
SolidAsyncDebouncer<TFn>
// 基本 API 调用防抖
const { maybeExecute } = createAsyncDebouncer(
async (query: string) => {
const results = await api.search(query);
return results;
},
{ wait: 500 }
);
// 结合状态管理
const [results, setResults] = createSignal([]);
const { maybeExecute } = createAsyncDebouncer(
async (searchTerm) => {
const data = await searchAPI(searchTerm);
setResults(data);
},
{
wait: 300,
leading: true, // 首次调用立即执行
trailing: false, // 跳过尾随边缘更新
onError: (error) => {
console.error('API 调用失败:', error);
}
}
);
// 基本 API 调用防抖
const { maybeExecute } = createAsyncDebouncer(
async (query: string) => {
const results = await api.search(query);
return results;
},
{ wait: 500 }
);
// 结合状态管理
const [results, setResults] = createSignal([]);
const { maybeExecute } = createAsyncDebouncer(
async (searchTerm) => {
const data = await searchAPI(searchTerm);
setResults(data);
},
{
wait: 300,
leading: true, // 首次调用立即执行
trailing: false, // 跳过尾随边缘更新
onError: (error) => {
console.error('API 调用失败:', error);
}
}
);