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请求
*后面的某个时刻执行回调代码