JS是单线程执行的

例子:就拿定时器setTimeout举例

        setTimeout(() => {
            console.log("time2000")
        }, 20000);   

        setTimeout(() => {
            console.log("time1000")
        }, 10000);

        function fun(){
            console.log("fn函数")
        };

        fun();

        alert("我踏马直接裂开")    //alert可以阻断主线程的运行,在点击确定以后运行接下来的内容

此时会输出的结果

    fun()
    跳出弹窗("我踏马直接裂开")
    //在点击跳出的弹窗后,再开始的计时
    //10秒后
    time1000
    //20秒后
    time2000

    //注释:Js中,定时器函数是同时执行的,20秒的函数得到结果与10秒的函数得到结果的间隔相差只为10秒,总时间是20秒,而不是想象中的轮流导致一个10秒结束后再读个20秒的条总时间30秒的.
 以上便是JS是单线程的实例,同时也可以看出Settimeout这个定时器实际上有时候也是并不会准确的,会在不同情况下有可能会产生较大差异的影响.

Js引擎执行代码的顺序:
---先执行初始化代码,包含一些特殊的代码
*设置定时器
*绑定监听
*发送ajax请求
*后面的某个时刻执行回调代码