欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

uniapp項目使用防抖及節(jié)流的方案實戰(zhàn)

 更新時間:2023年01月19日 11:52:28   作者:費玉清  
防抖就是指觸發(fā)事件后把觸發(fā)非常頻繁的事件合并成一次去執(zhí)行,節(jié)流是指頻繁觸發(fā)事件時只會在指定的時間段內(nèi)執(zhí)行事件回調(diào),即觸發(fā)事件間隔大于等于指定的時間才會執(zhí)行回調(diào)函數(shù),這篇文章主要給大家介紹了關(guān)于uniapp項目使用防抖及節(jié)流的相關(guān)資料,需要的朋友可以參考下

此方案出現(xiàn)的理由

  • 小程序中無法使用vue.directive的指令方法函數(shù)實現(xiàn)防抖節(jié)流
  • 傳統(tǒng)的防抖節(jié)流方式相對繁瑣

實現(xiàn)方案及效果

  • 新建一個debounce-view組件
  • 直接用debounce-view包裹需要防抖的內(nèi)容即可,如下:
<debounce-view @thTap="buyNow">
        <view class="buy-now">立即購買</view>
</debounce-view>

防抖組件內(nèi)容:

//debounce-view
<template>
	<view @click.stop="deTap">
		<slot></slot>
	</view>
</template>

<script>
	function deBounce(fn, delay = 500, immediate) {
		let timer = null,
			immediateTimer = null;

		return function() {
			let args = arguments,
				context = this;

			// 第一次觸發(fā)
			if (immediate && !immediateTimer) {

				fn.apply(context, args);
				//重置首次觸發(fā)標識,否則下個周期執(zhí)行時會受干擾
				immediateTimer = setTimeout(() => {
					immediateTimer = null;
				}, delay);
			}
			// 存在多次執(zhí)行時,重置動作需放在timer中執(zhí)行;
			if (immediateTimer) clearTimeout(immediateTimer);
			if (timer) clearTimeout(timer);

			timer = setTimeout(() => {
				fn.apply(context, args);
				timer = null;
				immediateTimer = null;
			}, delay);
		}
	}
	export default {
		methods: {
			deTap: deBounce(function() {
				console.log('deTap')
				this.$emit('deTap')
			}, 500, true),
		}
	}
</script>

<style>
</style>

節(jié)流組件內(nèi)容:

<template>
	<view @click.stop="thTap">
		<slot></slot>
	</view>
</template>

<script>
	// 第二版
	function throttle(func, wait) {
		var timeout;
		var previous = 0;

		return function() {
			context = this;
			args = arguments;
			if (!timeout) {
				timeout = setTimeout(function() {
					timeout = null;
					func.apply(context, args)
				}, wait)
			}

		}
	}
	export default {
		methods: {
			thTap: throttle(function() {
				this.$emit('thTap')
			}, 500)
		}
	}
</script>

<style>
</style>

總結(jié)

  • 上述方法有有點但也有缺點,優(yōu)點是使用起來非常的快捷方便,缺點是時間目前是寫死的,各位看官如果有新的想法或者意見還請指教小弟一二

到此這篇關(guān)于uniapp項目使用防抖及節(jié)流的文章就介紹到這了,更多相關(guān)uniapp使用防抖及節(jié)流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • javascript中字符串處理常用的方法匯總

    javascript中字符串處理常用的方法匯總

    JavaScript中操作字符串是一個很重要的話題,下面這篇文章主要給大家介紹了關(guān)于javascript中字符串處理常用的方法,文中通過圖文以及代碼示例介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • BootStrap Table對前臺頁面表格的支持實例講解

    BootStrap Table對前臺頁面表格的支持實例講解

    bootstrap-table是在bootstrap的基礎上面做了一些封裝,所以在使用bootstrap-table之前要導入的js和css,下面通過本文給大家詳細介紹需要引入的文件,對bootstrap table 表格感興趣的朋友一起看看吧
    2016-12-12
  • Javascript中this綁定的3種方法與比較

    Javascript中this綁定的3種方法與比較

    大家都知道JS是一門動態(tài)語言,與傳統(tǒng)的c和c++最大的區(qū)別就是js是在運行時動態(tài)檢測值的類型和變化。this是js中的一個關(guān)鍵字,它代表當前作用域的上下文環(huán)境,而且隨著上下文的改變而動態(tài)變化。這篇文章我們將詳細介紹Javascript中綁定this的三種方法與簡單的比較。
    2016-10-10
  • JS 實現(xiàn)緩存算法的示例(FIFO/LRU)

    JS 實現(xiàn)緩存算法的示例(FIFO/LRU)

    這篇文章主要介紹了JS 實現(xiàn)緩存算法的示例(FIFO/LRU),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 舉例分析HTTP?302?Redirect工作原理

    舉例分析HTTP?302?Redirect工作原理

    這篇文章主要為大家介紹了關(guān)于HTTP?302?Redirect的舉例分析,讓大家理解HTTP?302?Redirect工作原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2023-12-12
  • 最全的Javascript編碼規(guī)范(推薦)

    最全的Javascript編碼規(guī)范(推薦)

    本文給大家總結(jié)了js編碼規(guī)范知識,非常實用,在日常程序開發(fā)中經(jīng)??梢杂玫?,大家務必掌握
    2016-06-06
  • Javascript中prototype屬性實現(xiàn)給內(nèi)置對象添加新的方法

    Javascript中prototype屬性實現(xiàn)給內(nèi)置對象添加新的方法

    這篇文章主要介紹了Javascript中prototype屬性實現(xiàn)給內(nèi)置對象添加新的方法,涉及javascript中prototype屬性的使用技巧,需要的朋友可以參考下
    2015-05-05
  • Javascript筆記一 js以及json基礎使用說明

    Javascript筆記一 js以及json基礎使用說明

    JavaScript中的數(shù)據(jù)很簡潔的。簡單數(shù)據(jù)只有 undefined, null, boolean, number和string這五種,而復雜數(shù)據(jù)只有一種,即object。
    2010-05-05
  • Bootstrap輪播圖學習使用

    Bootstrap輪播圖學習使用

    這篇文章主要為大家詳細介紹了Bootstrap輪播圖學習使用的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • js中關(guān)于一個分號的崩潰示例

    js中關(guān)于一個分號的崩潰示例

    下面的js代碼不管if條件的結(jié)果是true還是false都會執(zhí)行大括號的代碼,結(jié)果發(fā)現(xiàn)if條件括號后面多寫了分號,崩潰啊
    2013-11-11

最新評論