debounce.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <script setup lang="ts">
  2. import { message } from "@/utils/message";
  3. import { debounce, throttle } from "@pureadmin/utils";
  4. defineOptions({
  5. name: "Debounce"
  6. });
  7. const handle = () => message("恭喜你,这是一条成功消息", { type: "success" });
  8. const immediateDebounce = debounce(handle, 1000, true);
  9. const debounceClick = debounce(handle, 1000);
  10. const throttleClick = throttle(handle);
  11. </script>
  12. <template>
  13. <div>
  14. <el-card class="mb-5" shadow="never">
  15. <template #header>
  16. <p class="font-medium">防抖:debounce</p>
  17. <el-link
  18. class="mt-2"
  19. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/able/debounce.vue"
  20. target="_blank"
  21. >
  22. 代码位置 src/views/able/debounce.vue
  23. </el-link>
  24. </template>
  25. <div class="mb-5">
  26. 所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n
  27. 秒内又触发了事件,则会重新计算函数执行时间。
  28. </div>
  29. <el-button @click="immediateDebounce">
  30. 连续点击我,只会执行第一次点击事件,立即执行
  31. </el-button>
  32. <el-button @click="debounceClick">
  33. 连续点击我,只会执行最后一次点击事件,延后执行
  34. </el-button>
  35. </el-card>
  36. <el-card shadow="never">
  37. <template #header>
  38. <div class="font-medium">节流:throttle</div>
  39. </template>
  40. <div class="mb-5">
  41. 所谓节流,就是指连续触发事件但是在 n
  42. 秒中只执行一次函数。节流会稀释函数的执行频率。
  43. </div>
  44. <el-button @click="throttleClick">
  45. 连续点击我,每一秒只会执行一次点击事件
  46. </el-button>
  47. </el-card>
  48. </div>
  49. </template>