Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 528|回复: 0

js函数节流(解决频繁触发函数的性能问题)

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-6 14:06:43 | 显示全部楼层 |阅读模式

    ​ JS中的函数大多数情况下都是由用户主动调用触发的,但在一些少数情况下,函数的触发不是由用户直接控制的。在这些场景下,函数有可能被非常频繁地调用,而造成大的性能问题。

      函数被频繁调用的场景

    键盘事件:

      参考百度的搜索框没输入一个字母就发送一次Ajax请求开销很大 通过下面的函数可以实现性能的优化,每过500ms 触发一次事件

     var isClick;
        $( 'text' ).on( 'keydown', function () {
            clearTimeout( isClick );
            isClick = setTimeout(function () {
                //发送Ajax请求
                $.ajax({
                    url: '...'
                    ...
                });
            }, 500 );
        });
    //上面所有的使用场景都适用

    鼠标移动触发事件

    var range = 10*10;//定义返回10px 小面 三角函数未开方 所有这里需要*10
    var currentPoint;
    function distance( p1, p2 ) {
        return Math.abs( Math.pow (p1.x - p2.x, 2 ) - Math.pow (p1.y - p2.y, 2 ) );
    }
    $( '#div' ).on( 'mousemove', function ( e ) {
        if ( !currentPoint ) {
            currentPoint = {
                x:e.offsetX, 
                y:e.offsetY
            };
        };
    if ( distance( currentPoint, e.PONIT ) < range ) return;
        // 正常执行的代码  
        currentPoint = {};
    });

    总结 : 函数节流就是为了解决函数的触发频率过高的问题

    另外附上我个人域名 www.wanyifeng.top 没事可以看看,欢迎留言!!

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-23 03:26 , Processed in 0.055590 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表