定时器、延时器和异步及相应面试题

162 阅读1分钟

计时器、倒计时器

语法: 计时器(function(){}); 计时器:setInterval() 倒计时器: setTimeout() 清除:clearInterval();claerTimeout(); ==注意:== 一般来说,两个清除语法都可以清除计时器和倒计时器,但为了加强语义,项目中一般使用对应的清除语法来清除计时器和倒计时器; 返回值: 时间ID --->值取决于你当前的定时器是这个页面的第几个定时器, 返回值可以用于关闭定时器。 ==计时器可以反复执行,延时器只执行一次。==

异步

 *  简单了解异步代码
         * 
         *      JS 的运行 是单线程的(执行代码从第一行开始,往下执行, 上一行不结束, 不会运行下一行代码)
         * 
         * 
         *          但是万一上一行代码比较耗时(5S), 那么我下一行代码就需要等待5S
         * 
         *      但是JS也分为 异步任务与同步任务
         * 
         *  JS 在运行的时候, 会按照从上到下的顺序执行代码, 但是会先把所有的同步任务先执行, 等所有的同步任务执行完毕, 在执行异步任务

面试题

    console.log('start')                // 同步任务 1
        setTimeout(function () {            // 异步任务 1
            console.log('timeout_start')        // y 同步任务 1
            setTimeout(function () {                // y 异步任务 1
                console.log('QF666')                    // X 同步 任务 1
            }, 0)
            console.log('timeout_end')          // y 同步任务 2
        }, 0)
        console.log('end')   

程序首先先执行同步任务,故先输出: start end 再执行异步池中的异步任务,按照先进先执行的原则,输出: timeout_start timeout_end 最后输出: QF666