今天解决了一个小程序中函数节流的问题 小记以下。
节流 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.使用的时候调用返回的匿名函数,可以用一个变量来接受

一个简单的计数器 代码如下

 function count(){
    let x = 0
    return function(){
        console.log(x++)
    }
}

let run = count()

setInterval(() => {
  run()
}, 200);
03-05 21:30