12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <script setup lang="ts">
- import { ElMessage } from "element-plus";
- import { debounce } from "/@/utils/debounce";
- import { useDebounceFn, useThrottleFn } from "@vueuse/core";
- const handle = () => {
- ElMessage({
- message: "恭喜你,这是一条成功消息",
- type: "success"
- });
- };
- const immediateDebounce = debounce(handle, 1000, true);
- const debounceClick = useDebounceFn(handle, 1000);
- const throttleClick = useThrottleFn(handle, 1000, false);
- </script>
- <template>
- <div>
- <el-card class="mb-5">
- <template #header>
- <div>防抖:debounce</div>
- </template>
- <div class="mb-5">
- 所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n
- 秒内又触发了事件,则会重新计算函数执行时间。
- </div>
- <el-button @click="immediateDebounce">
- 连续点击我,只会执行最后一次点击事件,立即执行
- </el-button>
- <el-button @click="debounceClick">
- 连续点击我,只会执行最后一次点击事件,延后执行
- </el-button>
- </el-card>
- <el-card>
- <template #header>
- <div>节流:throttle</div>
- </template>
- <div class="mb-5">
- 所谓节流,就是指连续触发事件但是在 n
- 秒中只执行一次函数。节流会稀释函数的执行频率。
- </div>
- <el-button @click="throttleClick">
- 连续点击我,每一秒只会执行一次点击事件
- </el-button>
- </el-card>
- </div>
- </template>
- <style scoped></style>
|