美文网首页
JavaScript基础 定时器

JavaScript基础 定时器

作者: 0说 | 来源:发表于2018-02-05 01:00 被阅读0次

setTimeout() 定时只执行一次

用法:
setTimeout( x , 1000 ); ===> 1000ms后执行x函数
x不能加();加括号后会立即执行 ,执行后返回值是undefined,执行顺序是先读()里的

setTimeout( x , 1000 );
function x(){
  alert( 1 );
}
这里可以看成
var x = xxx;
setTimeout( x , 1000 ); ===>先执行x;

另一种写法

setTimeout( ' x() ' , 2000 ) 
会当成js字符串代码来读 
字符串里可以写一段执行的代码( setTimeout、setInterval、eval() 这三种方法可以用这样写法)

例、

setTimeout( 'alert( 8888 );alert( 9999 )' , 2000 );

注意:用字符串这种方法时调用的x()是全局函数才可以

!function (){
    setTimeout( 'a()',1000 );
    function a(){
        alert( 5 ); ===>报错:"a()"要是全局的
  }
}();

setTimeout()调用函数且传参几种写法

一、
setTimeout( x , 2000 , 10 , 10 );
function x( a , b ){
    alert( a+b ); ===>弹出20
}

二、
setTimeout( bind( null , 10 , 10 ),2000 );

三、
setTimeout( function(){
    x( 10,10 );
},2000)

setInterval() 循环执行

括号里写法跟setTimeout一样

setInterval( x , 2000 );
function x(){
    alert( 1 );  ===>循环每2秒执行一次;
}

注意:时间是没办法到0的,最短最低是浏览器的频率,浏览器刷新频率 13~20

setTimeout( function (){
    alert( 2 );
},0 )                先弹1再弹2     setTimeout延迟执行
alert( 1 ) ;  ===>立即执行

清除定时器

clearTimeout();只执行一次时为什么还要清呢?因为一个网站如果测到你是vip就不用弹vip的广告;
clearInterval();

var t = setTimeout( function(){
      alert( 5 );
} , 5000 );
document.onclick = function (){
    clearTimeout( t );
}

setInterval 特殊调用

setInterval( fn() , 1000 ) //fn()马上会执行,下面函数返回的是fn 执行完函数后变成 setInterval( fn , 1000 )
这里可以看 var  a = fn() ===自执行后是fn    所以a=fn    setInterval( a , 1000 )
function fn(){
    num ++;
    console.log( num );
    return fn;
}

setTimeout代替setInterval

每隔13ms执行一次函数
假设要执行函数里的代码内容很多,多到下一次函数执之后还没完;
当用setInterval()时 只要时间一到就立马再调用里面的代码,不用等到所有代码执行完再调用;

setTimeout( function fn(){
      alert( 1 );   
      setTimeout( fn , 1000); // 上面执行到这里马上会调用自己,再从重新执行一次;
},1000)

这个方法比setInterval好,它可以保证前面的代码执行完再调用;(再做动画的时候会用到;)

同步与异步

7点时在搬砖
8点时在搬砖
9点时在搬砖
9点老板过来说:晚上7点一起去吃饭
继续搬
.....

这时在搬砖的事就是同步的,晚上7点一起去吃饭属于异步,要等搬砖的事全部做完再去


setTimeout(function (  ) {
            alert( 1 )
        })
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );
        console.log( 'a' );

先打印a再弹窗 定时器是异步 要等同步做完才会做;
异步操作有:带src ajax 定时器

相关文章

网友评论

      本文标题:JavaScript基础 定时器

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