56 lines
1.7 KiB
Vue
56 lines
1.7 KiB
Vue
<script setup lang="ts">
|
||
import { message } from "@/utils/message";
|
||
import { debounce, throttle } from "@pureadmin/utils";
|
||
|
||
defineOptions({
|
||
name: "Debounce"
|
||
});
|
||
|
||
const handle = () => message("恭喜你,这是一条成功消息", { type: "success" });
|
||
|
||
const immediateDebounce = debounce(handle, 1000, true);
|
||
|
||
const debounceClick = debounce(handle, 1000);
|
||
|
||
const throttleClick = throttle(handle);
|
||
</script>
|
||
|
||
<template>
|
||
<div>
|
||
<el-card class="mb-5" shadow="never">
|
||
<template #header>
|
||
<p class="font-medium">防抖:debounce</p>
|
||
<el-link
|
||
class="mt-2"
|
||
href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/able/debounce.vue"
|
||
target="_blank"
|
||
>
|
||
代码位置 src/views/able/debounce.vue
|
||
</el-link>
|
||
</template>
|
||
<div class="mb-5">
|
||
所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n
|
||
秒内又触发了事件,则会重新计算函数执行时间。
|
||
</div>
|
||
<el-button @click="immediateDebounce">
|
||
连续点击我,只会执行第一次点击事件,立即执行
|
||
</el-button>
|
||
<el-button @click="debounceClick">
|
||
连续点击我,只会执行最后一次点击事件,延后执行
|
||
</el-button>
|
||
</el-card>
|
||
<el-card shadow="never">
|
||
<template #header>
|
||
<div class="font-medium">节流:throttle</div>
|
||
</template>
|
||
<div class="mb-5">
|
||
所谓节流,就是指连续触发事件但是在 n
|
||
秒中只执行一次函数。节流会稀释函数的执行频率。
|
||
</div>
|
||
<el-button @click="throttleClick">
|
||
连续点击我,每一秒只会执行一次点击事件
|
||
</el-button>
|
||
</el-card>
|
||
</div>
|
||
</template>
|