console
window.vm = new Vue({
el:'#app',
data:{
searchval:'',
activeTab:1,
totalReqCount:0,
},
watch:{
'searchval':base.debounce(function(){
if(!this.searchval) return;
console.log('watch----'+this.searchval)
},500),
},
methods:{
tabBtn:function(curTab){
console.log('tab======')
this.activeTab = curTab;
this.getTabList(curTab);
},
getTabList:base.throttle(function(curTab){
console.log('请求数据----'+curTab)
this.totalReqCount++;
let curReqCount = this.totalReqCount;
let time = 1000*Math.random()*10;
setTimeout(()=>{
console.log(curReqCount,this.totalReqCount,time,this.activeTab);
if(curReqCount != this.totalReqCount) return;
console.log('请求结果list赋值处理=====');
},time)
},2000,{leading:true,trailing:true}),
searchInput(){
console.log('searchInput--'+this.searchval)
},
search(){
},
clickOnce:base.throttle(function(){
console.log('触发一次 - 3000ms节流')
},3000),
clickRepeat:base.throttle(function clickRepeat(){
console.log('触发多次 - 1000ms节流');
setTimeout(()=>{
clickRepeat.cancel();
},20)
},1000),
}
})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document测试</title>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
font-size: 20px;
}
[v-cloak]{
display: none;
}
.box{
margin:20px;
}
.title,.active{
color:red;
}
</style>
</head>
<body>
<div id="app" v-cloak>
<div class="box">
<p>1、Tab 切换示例:</p>
<span v-for="n in 5" @click="tabBtn(n)" :class="{'active':n == activeTab}" style="padding: 0 20px;"> tab{{n}} </span>
</div>
<div class="box">
<p> 2、搜索- 500ms防抖</p>
<input type="text" v-model="searchval" @keyup="search" @input="searchInput"/>
</div>
<div class="box">
<p> 3、只触发一次- 3000ms节流</p>
<button @click="clickOnce"> 按钮</button>
</div>
<div class="box">
<p> 4、触发多次 - 1000ms节流 </p>
<button @click="clickRepeat"> 按钮</button>
</div>
</div>
<script type="text/javascript" src="https://mscjs.51vv.com/wx/m/vv-base/js/source/??vue-2.6.11.min.js,axios.min.js,vue-i18n-8.28.2.min.js"></script>
<script type="text/javascript" src="https://mscjs.51vv.com/wx/m/vv-base/js/??vvlib/pic-cdn-cs.js,base.js,jsbridge_proxy_report.min.js,utils/report.js,vvlib/vv_kibana.min.js?v=123"></script>
</body>
</html>