异步代码概念

111 阅读1分钟

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是同步程序,按顺序由上至下执行站位,最后输出在第一个延时器内嵌套的延时器(最后输出);