天天看点

单线程

什么是单线程?

单线程:只有一个线程,同一时间只能做一件事

原因:避免DOM渲染的冲突

解决方案:异步

单线程demo1

定义一个循环,循环很多次,再打印一个结果,循环那么多次,很耗费时间,在循环过程中,浏览器处于卡顿状态

单线程demo2

不点弹框的确认,不继续走,浏览器卡顿

不执行完是不会走下一步的。为什么会有单线程,像后端开发,java,c#都有多线程,可以这个线程做这个,哪个线程做哪个,同时多个线程,做多件事情。但是为什么JS只能是单线程,而且和浏览器渲染是同一个线程。原因就是避免dom渲染冲突,

那怎么办呢?也不能一直卡那,很多情况下,我们是不需要等在那里的。

解决方案-异步。

如果是单线程,1秒钟就在那等着,浏览器卡在那,js也不执行,也关掉,电脑在那呼呼的转。肯定不科学。那么js异步是什么,就是我先打印100,然后1s钟后打印200。我先不管,反正1s以后再执行,先打印300,400,打印之后。还有个1s之后打印200,那么再1s之后打印200.

也是异步,先把该执行的执行完了,再做定时不定时的等待。不是异步的都执行完了,再看异步中的任务。

那么怎么样通过我们先不管,后面再执行,这种真实的实现是怎么样的。这个时候就是事件轮询的过程

现在异步的解决方案还是有一些问题

1、没按照书写方式执行,可读性差

2、callback中不容易模块化,回过头来执行,上面的ajax,success就是callback。

继续阅读