JS.DAY11.笔记

102 阅读2分钟
  • 定时器

  1. setInterval(fn ,time) 每隔一段时间做一件事情
  2. 变量存储时,是一个数组,表示页面当中的第几个定时器
  3. 定时器是异步的
  4. 清除定时器 clearInterval(t) 参数t:表示清除第几个定时器
  • js 单线程的语言

  1. 代码正常从上往下执行
  2. 但是也有一些特殊功能不是这样的:(异步)
  3. 图片的请求 , 数据的请求 需要服务器响应(需要时间)
  4. 定时器和延时器以及点击事件 -- 都不是立即执行de(需要时间,或者用户)
  • js的所有的代码都在主线程上执行

  1. 同步先执行
  2. 异步存放在任务队列中(任务队列不能执行任务,而是任务时间到了之后去主线程上执行)
  • 定时器代码实现

        var t = setInterval(function(){
            console.log(666);//每个一秒钟打印一个666
        },1000)
        // 这是回调函数,每隔1s调用一次

        //清除定时器
        clearInterval(t)
  • 延时器

  1. 定时器:重复的闹钟
  2. 延时器:一次性的闹钟
  3. var setTimeout(fn,time)
  4. 延时器也是一个异步,变量存储的是第几个闹钟,不分定时器还是延时器
  5. clearInterval 既可以清除定时器,也可以清除延时器
  6. clearTimeout 既可以清除延时器,也可以清除定时器
  • 延时器代码实现

        var t2 = setTimeout(function(){
            console.log(666);
        },1000)

        console.log(t2);

        // 关闭延时器 clearTimeout()
        clearTimeout(t2)
  • 关于异步

  1. 在点击事件里面,绑定是同步的,事件处理函数是异步的
  2. 在定时器里面,要做的事情是异步的,绑定定时器是同步的
  • 延时器改为定时器

        // 没隔1秒调用一次函数
        // 利用递归可以把延时器改成定时器的效果
        function fn(){
            setTimeout(function(){
                console.log(666);
                fn();
            },1000)
        }
        fn()