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

2020-10-29  本文已影响0人  boyiis

利用延迟递归解决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进行了保存(闭包)

上一篇下一篇

猜你喜欢

热点阅读