您当前的位置:首页 > 计算机 > 精彩资源

关于event loop的一些总结

时间:03-30来源:作者:点击数:

event loop这一概念在前端的地位是非常重要的,第一次是在鹅厂的二面中被问到,当时是问到了 事件 这一概念,虽然说上来了一些,但是随后问到event loop,当时有点儿懵,从来没有接触过这个概念,还以为是JS中事件的某项特殊的知识点呢,直到字节一面中又一次被问到,而且面试官强调了其重要性,才意识到自己知识点的不足,接下来总结一下:

首先提一点的是,JavaScript这门语言是单线程语言,原因可以追溯到JavaScript的问世,在JavaScript问世之前,实现简单的登录界面,需要把表单中的数据提交到后台服务器端进行判断,表单是否为空,是否以正确的格式填写,无疑给后台服务器端增加了压力,本来进行数据处理和操作就足够麻烦了,所以人们希望这些“琐事”可以在前台进行处理,因此JavaScript便问世了,由于它的问世初衷是为了减轻后台服务器端的压力,不想让浏览器变得太复杂,因此JavaScript便是一种单线程语言,因为多线程需要共享资源、且有可能修改彼此的运行结果,对于一种网页脚本语言来说,这就太复杂了。(关于进程和线程可以参见进程与线程的简单解释

现在知道了JavaScript是单线程工作,那么会出现这样一个问题,当程序需要读取数据时,例如从form这种获取账号密码,那么之后的活动就会因等待而无法进行;当程序需要请求HTTP时,后续的操作也无法进行,这样的排队时等待既浪费时间也消耗资源,这是我们不愿意看到。

那么怎么解决上述的问题呢,首先引用,引用Wikipedia一句话:

“Event Loop是一个程序结构,用于等待和发送消息和事件。(a programming construct that waits for and dispatches events or messages in a program.)”

JavaScript就是在程序中设置两个线程:一个负责程序本身的运行,称为"主线程";另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为"Event Loop线程"(可以译为"消息线程")。当程序需要进行读取等操作时,Event loop便会去通知所对应的I/O程序,不需要等待读取完毕,接着向下进行,当读取完毕之后,再通过Event loop通知主进程,返回到主进程当时停下来的地方,这样就节省了大量的时间。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门