lodash 防抖函数

有这样一个需求,点击switch开关将状态值记录回后台。原始做法,添加事件并将调用后台接口。


image.png

然后连续点击开关看到接口请求情况如下 :


image.png

我们在连续点击的情况之下,会在每一次点击之后就会执行自定义函数的回调,这时如果你的回调中处理一些比较消耗内存的一些操作,或者调用接口之类,那么很有可能造成不必要的浪费以及阻塞,更可能会导致项目崩溃。

当当当,这个时候防抖函数就要上场了。

函数防抖: 频繁触发,但只在特定的时间内没有触发执行条件才执行一次代码

<template>
    <el-switch
        v-model="scope.row.status"
        :active-value="1"
        :inactive-value="0"
        @change="val => changeStatus(val)"
        active-color="#15A29E"
        inactive-color="#D1D4DC"
    >
    </el-switch>
</template>

<script>
    import { updateLabelStatus } from '@/api/dynamicLabel'
    export default {
        methods: {
            //修改状态
            changeStatus: _.debounce(function(item, val) {
                updateLabelStatus(item.id, val).then(res => {
                    this.getTableList()
                }).catch(() => {
                    this.getTableList()
                })
            }, 500),
        }
    }
</script>

酱紫,连续点击多次只执行一次。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 来源:司徒正美zhuanlan.zhihu.com/p/38313717 函数防抖与节流是很相似的概念,但它们的应...
    CRUD_科科阅读 1,852评论 0 2
  • 他们都是可以防止一个函数被无意义的高频率调用 防抖函数:是函数在特定的时间内不被再调用后执行节流函数:是确保函数特...
    子语喵阅读 5,587评论 0 22
  • (转载) 函数防抖节流的理解及在Vue中的应用 防抖和节流的目的都是为了减少不必要的计算,不浪费资源,只在适合的时...
    7b7d23d16ab5阅读 3,421评论 0 0
  • 防抖和节流的目的都是为了减少不必要的计算,不浪费资源,只在适合的时候再进行触发计算。 1. 函数防抖(deboun...
    像朝阳一样阅读 4,003评论 0 2
  • 防抖和节流的目的都是为了减少不必要的计算,不浪费资源,只在适合的时候再进行触发计算。 1. 函数防抖(deboun...
    秒新分异阅读 2,241评论 0 1