美文网首页
延时函数 与 间隔函数

延时函数 与 间隔函数

作者: Hunter_Gu | 来源:发表于2016-12-21 23:44 被阅读116次

    延时函数 setTimeout(function(){},ms);

        clearTimeout(d);
        var d = setTimeout(function(){},ms);
    
    • setTimeout(function(){},0);
        var a = 1;
        setTimeout(function(){
            console.log('before:' + a);
            a = 2;
            console.log('after:' + a);
        },0);//设置为0,相当于放在最后执行
        a = 100;
        console.log(a);
    

    相当于:

        var a = 1;
        a = 100;
        console.log(a);
        setTimeout(function(){
                console.log('before:' + a);
                a = 2;
                console.log('after:' + a);
            },0);//以最快的方式执行
    
    • 需要注意的是:
        for(var i = 0;i < 10;i ++){
            setTimeout(function(){
                console.log(i);
            },1000);
        }
        // 结果为输出:10(因为1s内,循环早已完成)
    

    间隔函数 setInterval(function(){},ms);

        clearInterval(d);
        var d = setInterval(function(){},ms);
    
    • 任务序列,当执行代码的时间大于间隔时间时
       setInterval(function(){
           ...//这行这些代码需要花1500ms
       },1000)
    

    当出现这种情况时,会等待当前代码执行完,等待执行的代码会加入任务序列中,等当前代码执行完后,立即执行。

    setTimeout 与 setInterval 区别

    • setTimeout
       setTimeout(function(){
           ...//这行这些代码需要花1s
       },1000)
    

    总时间 = 1s + 1000ms

    • setInterval
       setInterval(function(){
           ...//这行这些代码需要花500ms
       },1000)
    

    总时间 = 500ms + (1000 - 500)ms.

    使用 setTimeout 模拟 setInterval

        setTimeout(function(){
            setTimeout(arguments.callee,10)
        },10);
    

    但是,这实际上比 setInterval 时间更长一些

    相关文章

      网友评论

          本文标题:延时函数 与 间隔函数

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