延时函数 与 间隔函数

延时函数 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 时间更长一些

你可能感兴趣的:(延时函数 与 间隔函数)