理解浏览器中的 EventLoop
24-05-24
slbcun
1053℃
0
我会先讲解浏览器端的 Eventloop 的运行机制,待你对浏览器端有了一定的理解之后,再带你设计一些 Node.js 的 Eventloop 的底层逻辑。你可以发现,无论是浏览器端还是服务端,都在使用 Eventloop,虽然两者机制不同,但都利用了 JavaScript 语言的单线程和非阻塞的特点。希望你能扎实地掌握这部分内容,因为这对你在工作中编写高性能的 JavaScript 代码有所帮助。
那么依照惯例,在课程开始前请你先思考两个问题:
浏览器端的 Eventloop 起到了什么作用?
Node.js 服务端的 Eventloop 的作用又表现在哪?
现在开始跟着我一起探究浏览器端的 Eventloop 吧。
浏览器的 Eventloop
Eventloop 是 JavaScript 引擎异步编程背后需要特别关注的知识点。JS 在单线程上执行所有操作,虽然是单线程,但是能够高效地解决问题,并能给我们带来一种“多线程”的错觉,这其实是通过使用一些比较合理的数据结构来达到此效果的。我们一起来看下 JavaScript 引擎背后都有哪些东西在同时运转。
1.调用堆栈(call stack)负责跟踪所有要执行的代码。每当一个函数执行完成时,就会从堆栈中弹出(pop)该执行完成函数;如果有代码需要进去执行的话,就进行 push 操作