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:{
// tab按钮点击
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}),
// 搜索
// search:base.debounce(function(){
// if(!this.searchval) return;
// console.log(this.searchval)
// },500),
searchInput(){
console.log('searchInput--'+this.searchval)
},
search(){
// console.log('searchKeyUp--'+this.searchval)
},
// 触发一次
clickOnce:base.throttle(function(){
console.log('触发一次 - 3000ms节流')
},3000),
//触发多次 -- 回调函数需要写函数名称
clickRepeat:base.throttle(function clickRepeat(){
console.log('触发多次 - 1000ms节流');
setTimeout(()=>{
clickRepeat.cancel();
// arguments.callee.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;
/* border-bottom: 1px solid palevioletred; */
}
.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>