js中异步和同步

js引擎

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

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

js执行为什么是单线程?

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

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

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

例如:

1:

1.jpg

2:

2.jpg

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

异步:

3.jpg输出结果:4.jpg

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

setTimeout setInterval 都是异步任务。


猜你喜欢

转载自blog.51cto.com/11871779/2125824
今日推荐