电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

js防抖函數(shù)和節(jié)流函數(shù)使用場景和實現(xiàn)區(qū)別示例分析

瀏覽:124日期:2024-05-13 09:21:20

本文實例講述了js防抖函數(shù)和節(jié)流函數(shù)使用場景和實現(xiàn)區(qū)別。分享給大家供大家參考,具體如下:

開發(fā)過程中,都遇到過某個事件被頻發(fā)觸發(fā)的場景,比如resize,scroll事件,input事件,而對應(yīng)的事件處理函數(shù)也會被高頻率調(diào)用,這時會增加瀏覽器負(fù)擔(dān),用戶體驗也不好,這也是防抖函數(shù)和節(jié)流函數(shù)存在的意義和使用場景。

函數(shù)防抖(debounce):

持續(xù)觸發(fā)事件時,在設(shè)定時間段內(nèi)沒有被觸發(fā),才去調(diào)用事件處理函數(shù),在設(shè)定時間段內(nèi)如果事件又被觸發(fā),則不調(diào)用事件處理函數(shù),并從觸發(fā)事件時間重新開始延時。

具體實現(xiàn):

設(shè)計思路:在setTimeout中調(diào)用事件處理函數(shù),如果在定時器觸發(fā)函數(shù)執(zhí)行之前又觸發(fā)函數(shù),清除定時器。

function debounce(fn, timeout){ timeout = timeout || 1000; let timer; return () => { if(timer){ clearTimeout(timer)} timer = setTimeout(() => { fn() },timeout) }} function printEvent(){ console.log(’1121212’)} window.addEventListener(’scroll’,debounce(printEvent,1000),false)

節(jié)流函數(shù)(throttle) throttle [’θrɑt(ə)l] 油門;節(jié)氣門;扼殺

當(dāng)事件被持續(xù)觸發(fā)時,在設(shè)定時間內(nèi)只讓事件處理函數(shù)觸發(fā)一次。

定時器實現(xiàn)模式:定時器在延時時間執(zhí)行過后,重置為null, 定時器為null時,重新設(shè)置定時器,如此循環(huán)

//節(jié)流函數(shù)function throttle(fn, range){ range = range || 1000; let timer; return () => { //console.log(111,typeof timer) if(!timer){ timer = setTimeout( () => {fn()timer = null },range) } }} window.addEventListener(’mousemove’,throttle(printEvent,1000),false)

時間戳實現(xiàn)模式:初始化時獲取時間,每次觸發(fā)事件時再次獲取時間,兩次時間間隔等于或大于設(shè)定時間,執(zhí)行事件,初始化時間重置為當(dāng)前時間,如此循環(huán)。

//節(jié)流函數(shù) 時間戳模式var throttle2 = function(func, delay) {var prev = Date.now();return function() {var context = this;var args = arguments;var now = Date.now();if (now - prev >= delay) {func.apply(context, args);prev = Date.now();}}}

也可以使用時間戳加定時器結(jié)合實現(xiàn):

總結(jié):

函數(shù)防抖:在無事件觸發(fā)后的設(shè)定時間執(zhí)行事件,將幾次操作合并為一此操作進(jìn)行。這樣一來,只有最后一次操作能被觸發(fā)。

函數(shù)節(jié)流:使得一定時間內(nèi)只觸發(fā)一次函數(shù)。原理是通過判斷是否到達(dá)一定時間來觸發(fā)函數(shù)。

區(qū)別: 函數(shù)節(jié)流不管事件觸發(fā)有多頻繁,都會保證在規(guī)定時間內(nèi)一定會執(zhí)行一次真正的事件處理函數(shù),而函數(shù)防抖只是在最后一次事件后才觸發(fā)一次函數(shù)。

比如在頁面的無限加載場景下,我們需要用戶在滾動頁面時,每隔一段時間發(fā)一次 Ajax 請求,而不是在用戶停下滾動頁面操作時才去請求數(shù)據(jù)。這樣的場景,就適合用節(jié)流技術(shù)來實現(xiàn)。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 安徽成考网-安徽成人高考网 | 电采暖锅炉_超低温空气源热泵_空气源热水器-鑫鲁禹电锅炉空气能热泵厂家 | 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | RFID电子标签厂家-上海尼太普电子有限公司 | 亚洲工业智能制造领域专业门户网站 - 亚洲自动化与机器人网 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 护腰带生产厂家_磁石_医用_热压护腰_登山护膝_背姿矫正带_保健护具_医疗护具-衡水港盛 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 活性炭-果壳木质煤质柱状粉状蜂窝活性炭厂家价格多少钱 | 沙盘模型公司_沙盘模型制作公司_建筑模型公司_工业机械模型制作厂家 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 混合生育酚_醋酸生育酚粉_琥珀酸生育酚-山东新元素生物科技 | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 伸缩节_伸缩器_传力接头_伸缩接头_巩义市联通管道厂 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 | 搪玻璃冷凝器_厂家-越宏化工设备 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 威客电竞(vk·game)·电子竞技赛事官网 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 选矿设备,选矿生产线,选矿工艺,选矿技术-昆明昆重矿山机械 | 昊宇水工|河北昊宇水工机械工程有限公司 | CXB船用变压器-JCZ系列制动器-HH101船用铜质开关-上海永上船舶电器厂 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 安徽合肥项目申报咨询公司_安徽合肥高新企业项目申报_安徽省科技项目申报代理 | 减速机_上海宜嘉减速机| Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 |