美文网首页
使用async + while 替代setInterval

使用async + while 替代setInterval

作者: 百分百空手接白刃_566c | 来源:发表于2021-04-14 13:57 被阅读0次
    setInterval 的弊端
    • setInterval 对自己调用的代码是否报错漠不关心。即使调用的代码报错了,它依然会持续的调用下去
    • setInterval 无视网络延迟。在使用 ajax 轮询服务器是否有新数据时,必定会有一些人会使用setInterval,然而无论网络状况如何,它都会去一遍又一遍的发送请求,如果网络状况不良,一个请求发出,还没有返回结果,它会坚持不懈的继续发送请求,最后导致的结果就是请求堆积。
    • setInterval 并不定时。如果它调用的代码执行的时间小于定时的时间,它会跳过调用,这就导致无法按照你需要的执行次数或无法得到你想要的结果。
    • setInterval 做动画时低频会有卡顿现象,尤其是在低端机型使用
    替代方案
    1. 使用setTimeout
    let timer = null
    interval(func, wait){
        let interv = function(){
            func.call(null);
            timer=setTimeout(interv, wait);
        };
        timer= setTimeout(interv, wait);
     },
    
    1. 使用async + while(推荐)
        function delay(ms = 1000) {
            return new Promise((resolve => {
                setTimeout( () => {
                    resolve()
                }, ms)
            }))
        }
        async function interval() {
           while (true){
               try {
                   await delay(3000);
                   //doSome
               }catch (e) {
                   // e
               }
           }
        }
    

    相关文章

      网友评论

          本文标题:使用async + while 替代setInterval

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