美文网首页
利用延迟递归解决setinterval时间过长导致页面内存崩溃的

利用延迟递归解决setinterval时间过长导致页面内存崩溃的

作者: boyiis | 来源:发表于2020-10-29 11:17 被阅读0次

    利用延迟递归解决setinterval时间过长导致页面内存崩溃的问题

    先看解决方案

    function hahaha(f, time) {
        let timer;
        return function walk() {
            clearTimeout(timer);
            timer = setTimeout(function () {
                f();
                walk(); 
            }, time);
        };
    }
    
    hahaha(updateFormat, 1000)();
    

    可能有的同学是考虑的下面的一种方式

    function walk(f, time) {
      setTimeout(
        function() {
          f()
          walk(f, time)
        }, time)
    }
    walk(updateFormat, 1000)
    

    上面一种方式为啥比下面一种方式好呢?
    上面一种方式是个延迟递归,walk(f, time),一段时间后,内部再次调用walk(f, time)。而下面一种方式没有对f,time保存,所以每次调用walk()需要传递参数f, time。而上面一种方式对f, time进行了保存(闭包)

    相关文章

      网友评论

          本文标题:利用延迟递归解决setinterval时间过长导致页面内存崩溃的

          本文链接:https://www.haomeiwen.com/subject/iyjkvktx.html