js引擎

js引擎是浏览器的重要组成部分,重要用于读取js和执行js代码。

js引擎执行js时是单线程执行的。

js执行为什么是单线程?

试想一下:如果js是多线程执行的,假设现在有两个线程p1,p1,那么这两个线程可以同时对同一个dom元素进行操作

比喻说,p1对dom元素进行更新操作,p2对dom元素进行删除操作,这样就会引起混乱。

既然是单线程执行,就说明js代码是从上往下一行一行解析执行的,只有上一行代码执行完毕了才会执行下一行代码。如果上一行代码解析时间很长,那么下一行代码就会被阻塞,对于用于而言,阻塞就以为这卡死,用户体验度很差。那么这个就是同步的特点。

例如:

1:

js中异步和同步_异步

2:

js中异步和同步_异步_02

注意:这就是同步执行的效果,也就是说只有等到前面的代码执行完了,我才能接着往下志执行的。

异步:

js中异步和同步_同步_03输出结果:js中异步和同步_同步_04

注意:异步就是你做你的事情,我的事情,互不影响。

setTimeout setInterval 都是异步任务。