防抖

通过设置 options.debounceWait,进入防抖模式,此时如果频繁触发 run 或者 runAsync,则会以防抖策略进行请求。

const { data, run } = useRequest(getUsername, {
  debounceWait: 300,
  manual: true,
});

如上示例代码,频繁触发 run,只会在最后一次触发结束后等待 300ms 执行。

你可以在下面 input 框中快速输入文本,体验效果


data:
点击查看代码
<script setup lang="ts">
import { mockFetchFast } from "@/api";
import { useRequest } from "ahooks-for-vue";

const { loading, data, run } = useRequest(mockFetchFast, {
  debounceWait: 1000,
  manual: true,
});
</script>
<template>
  <div>
    <input type="text" @input="run" />
    <br />
    data:{{ loading ? "loading..." : data }}
  </div>
</template>
<style></style>

API

Options

debounce 所有参数用法和效果同 lodash.debounceopen in new window

参数说明类型默认值
debounceWait防抖等待时间, 单位为毫秒,设置后,进入防抖模式number-
debounceLeading在延迟开始前执行调用booleanfalse
debounceTrailing在延迟结束后执行调用booleantrue
debounceMaxWait允许被延迟的最大值number-

备注

  • options.debounceWaitoptions.debounceLeadingoptions.debounceTrailingoptions.debounceMaxWait 支持动态变化
  • runAsync 在真正执行时,会返回 Promise。在未被执行时,不会有任何返回。
  • cancel 可以中止正在等待执行的函数。
Last Updated:
Contributors: 郑磊