JavaScript 中的函数大多数情况下都是由用户主动调用触发的,除非是函数本身的实现不合 理,否则我们一般不会遇到跟性能相关的问题。但在一些少数情况下,函数的触发不是由用户直 接控制的。在这些场景下,函数有可能被非常频繁地调用,而造成大的性能问题。如下列一些场景

  • window.onresize 事件。
  • mousemove 事件。
  • 上传进度。

那么在Vue中怎么实现和使用一个节流函数呢,k看下面代码

    <div id="app"><button @click="handleClick">测试</button></div>
// 节流函数
function throttle (fn, interval) {var _self = fn, // 保存需要被延迟执行的函数引用timer, // 定时器firstTime = true; // 是否是第一次调用return function () {var args = arguments;_me = this;if (firstTime) { // 如果是第一次调用不需要延迟_self.apply(_me, args); // 执行fn函数并且修正此函数中this所运行的上下文指向return firstTime = false;}if (timer) { // 如果定时器还在,说明前一次延迟执行还没有完成return false;}timer = setTimeout(function () { // 延迟一段时间执行clearTimeout(timer);timer = null;_self.apply(_me, args); // 执行fn函数并且修正此函数中this所运行的上下文指向}, interval || 500);}
}
var app = new Vue({el: '#app',data: {message: 'Hello Vue!'},methods: {/*正确用法*/handleClick: throttle(function (event) {console.log('this:', this);console.log('触发', event);}, 1000),/*错误用法handleClick: function (event) {throttle(function () {console.log('this:', this);console.log('触发', event);})}*/}
})

vue中如何使用节流(throttle)函数相关推荐

  1. Vue中的Diff算法 patch函数-简单Diff算法-双端Diff算法-快速Diff算法-当数据发生改变,视图如何更新?

    文章目录 Vue中的Diff算法 概述 前置知识 patch方法 简单Diff算法 总结 双端Diff算法 --vue2 快速Diff算法 --vue3 vue2和vue3 Diff算法的区别 当数据 ...

  2. 彻底明白VUE中的done参数和函数作用,不懂的请进来

    最近在学习vue.js发现钩子函数这一块,有一个done函数,莫名奇妙难懂,网上翻遍了,整了3个多小时,才弄明白怎么回事. 所以特地写下一个超简单的示例供学习者理解参考.不多说,上代码:后面有图解 & ...

  3. Vue中message.split().reverse().join()函数用法

    1.split('') 把一个字符串分割成字符串数组 把数据拆分为一个数组,括号里的' '是把数据拆分为每个字符串 2.reverse() 颠倒数组中元素的顺序 只作用于数组,跟在split('')后 ...

  4. vue中的created和mounted函数不生效(created和mounted不管用)?

    原因(这里只提供解决思路,不提供方法): 1.keep-alive缓存问题导致(当使用keep-alive的时候,页面第一次进入时,钩子函数的触发顺序created -> mounted -&g ...

  5. vue中使用pug语法调用函数传参 mixin

    npm i -D pug pug-html-loader pug-plain-loadermodule.exports = {chainWebpack: config => {config.mo ...

  6. vue 日期格式化返回指定个数月份_12、vue中日期格式化转换的函数

    /** *  format time depend on the offer timestamp or Date instance *  @param  {Number, Date } date 要转 ...

  7. 函数防抖(debounce)和节流(throttle)以及lodash的debounce源码赏析

    函数节流和去抖的出现场景,一般都伴随着客户端 DOM 的事件监听.比如scroll resize等事件,这些事件在某些场景触发非常频繁. 比如,实现一个原生的拖拽功能(不能用 H5 Drag& ...

  8. vue中的data为什么必须是一个函数

    其实这个问题是js的问题,并非是vue的问题 这和原型链的知识有关 我们可以反向推一下,如果vue中的data是一个对象的话会发生什么现象 举例:vue中的data是一个对象 function Com ...

  9. Vue中的 h 函数

    Vue中的 h 函数 在了解 h 函数之前,我们需要先了解 虚拟DOM, 什么是 虚拟DOM? 虚拟DOM 是使用JS 对象模拟真实的DOM结构,用JavaScript 对象描述DOM 的层次结构.D ...

最新文章

  1. 表格下划线怎么加粗_这招高!Excel签名栏的下划线随列宽变化,是不是感觉牛哄哄的?...
  2. IDEA2020如何设置全局maven路径
  3. XShell 技巧分享
  4. HDU2066:一个人的旅行(Dijkstra)
  5. python 计算器 eval ctf_CTF逆向--.NET与Python篇
  6. Akamai “三驾马车”,如何应对疫情后新场景形态下的新考验?
  7. 如何评价一个产品经理工作做的好坏?
  8. django 1.8 官方文档翻译: 4-2-4 人性化
  9. 售价17999元起,华为Mate X2发布;程序员10万“买”了个北京户口;赏金猎人获苹果5000美元奖励 | 极客头条...
  10. 建好ftp服务器后怎么从客户端更改密码?
  11. SQL Cookbook:一、检索记录(2)从表中检索部分行
  12. ORA-02049: 超时: 分布式事务处理等待锁
  13. QSqlQueryModel结合QTreeView遇到的查询结果不显示的问题
  14. 3.26 Tensorflow 实验记录
  15. SM2数字签名算法java实现
  16. 解决QFontDatabase: Cannot find font directory XXX/lib/fonts
  17. 用计算机制作多媒体作品使用的素材都必须,多媒体技术(选择题).doc
  18. pc端点击按钮下载app
  19. 孝经白话:五刑章第十一
  20. T级攻防:大规模DDOS防御架构

热门文章

  1. rtmp协议规范详解
  2. 【CF1626B】minor reduction
  3. 算法:数据流中的中位数
  4. 转义字符表大全(转)
  5. wamp橙色不变绿的几个主要原因
  6. SE-Networks
  7. win10搜索框突然不能使用了
  8. 6、英飞凌-AURIX-TC3XX: PWM实验之使用 GTM -ATOM 实现
  9. Java/JavaScript有哪些图形图像处理的框架?
  10. 使用H-lua框架制作魔兽争霸地图(1-准备阶段)