1.异步代码概念
JS的运行是单线程的(执行代码从第一行开始,往下执行, 上一行不结束,不会运行下一行代码);
注意:如果上一行代码比较耗时(5S),那下一行代码就需要等待5S,且JS也分为异步任务(如今天学习的两个定时器)与同步任务JS 在运行的时候,会按照从上到下的顺序执行代码, 但是会先把所有的同步任务先执行,等所有的同步任务执行完毕, 再执行异步任务;
console.log(1);
console.log(2);
setInterval(function () {
console.log(3);
}, 1000)
console.log(4);
解析:1,2,4为同步任务,所以会优先执行,定时器为异步程序,且该定时器设置1S后执行,所以3应在1,2,4之后执行;
拓展:关于同异步代码的面试题 问,以下代码的执行顺序为?
console.log('start'); //1
setTimeout(function () {
console.log('timeout_start') //2
setTimeout(function () {
console.log('666666'); //3
}, 0)
console.log('timeout_end'); //2
}, 0)
console.log('end'); //1
解析: 输出顺序为:1.start 2.end 3.'timeout_start' 4.'timeout_end' 5.'666666'
描述: start和end为同步程序,按顺序优先执行站位,在第一个延时器内(异步程序),timeout_start和timeout_end是同步程序,按顺序由上至下执行站位,最后输出在第一个延时器内嵌套的延时器(最后输出);