美文网首页
js执行机制

js执行机制

作者: yueluoxingliu | 来源:发表于2022-01-27 21:35 被阅读0次

    JavaScript是基于单线程运行的,同时又是可以异步执行的——基于事件来驱动

    1.导图:

    2.说明:

    同步和异步任务分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数。

    当指定的事情完成时,Event Table会将这个函数移入Event Queue。

    主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。

    上述过程会不断重复,也就是常说的Event Loop(事件循环)。

    2.1 同步任务:

    function outer (ot) {

        function inner(it) {

            console.log(it);

        }

        inner(20);

        console.log(ot);

    }

    outer(10);

    -----过程------

    0.代码没有执行的时候,执行栈为空栈

    1. outer函数执行时,创建了一帧,这帧中包含了形参、局部变量(预编译过程),然后把这一帧压入栈中

    2.然后执行 outer函数内代码,执行inner函数

    3.创建新帧,同样有形参、局部变量,压入栈中

    4. inner函数执行完毕,弹出栈

    5. outer函数执行完毕,弹出栈

    6.执行栈为空

    2.2 异步任务

    $.ajax({

        url: ‘localhost:/js/demo.json’,

        data: {},

        success: function (data) {

            console.log(data);

        }

    });

    console.log(‘run’);

    -----过程------

    0.Ajax 进入Event Table,注册回调函数success

    1.执行console.log(‘run’)

    3.ajax事件完成http网络请求线程把任务放入Event Queue中

    4.主线程(调用栈)读取任务下执行success函数

    相关文章

      网友评论

          本文标题:js执行机制

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