今天解决了一个小程序中函数节流的问题 小记如下。
节流 lodash中是throttle()那个函数,改天能够去研究下源码
下面是我本身实现的节流函数小程序
getClickTagFunc(){ //定义一个标识,用来判断是否绕过下面匿名函数的判断 let canRun = true //这个函数在onLoad()的时候就被调用 //会返回一个匿名函数,这个匿名函数会被存在data里 return function(id, isLiked){ //匿名函数会在父做用域中去寻找canRun 若是是false 则再也不执行下面的代码 return 掉 if(!canRun) return false //绕过判断以后 当即把父做用域内的值设为false 这个是关键 因为canRun是false 因此200毫秒以内这个函数再被调用 就会直接被 return 掉 canRun=false setTimeout(() => { dosomething...... //作完想作的事情以后 把canRun设置为true 这样dosomething才会再次被调到。一般dosomething这里会是一个回调函数 canRun=true }, 200) } },
节流简单点说就是稀释函数被调用的频率
而后还有一个就是闭包,以前一直不明白闭包要用在什么地方,今天算是初步弄明白了。可让局部变量不被重置,一般来讲 这是须要一个全局变量的。可是经过一个闭包也能完成。闭包
1.定义一个函数
2.函数里面定义一个变量
3.返回一个匿名函数
4.匿名函数里面操做这个变量
5.使用的时候调用返回的匿名函数,能够用一个变量来接受函数
一个简单的计数器 代码以下code
function count(){ let x = 0 return function(){ console.log(x++) } } let run = count() setInterval(() => { run() }, 200);