基本介绍
- 堆:存放了大量的非结构化数据,比如变量,对象等
- 调用桟:会记录素有的函数调用信息,当我们调用某个函数式,会将其参数与局部变量等压入桟中
- 队列:包含了一些列带处理的信息与相关联的回调函数
- javascript主线程只拥有一个函数调用桟和一个任务队列
什么是异步
在 Web 开发中,我们常常会需要处理网络请求等相对较慢的操作,如果将这些操作全部以同步阻塞方式运行无疑会大大降低用户界面的体验。另一方面,我们点击某些按钮之后的响应事件可能会导致界面重渲染,如果因为响应事件的执行而阻塞了界面的渲染,同样会影响整体性能。实际开发中我们会采用异步回调来处理这些操作,这种调用者与响应之间的解耦保证了 JavaScript 能够在等待异步操作完成之前仍然能够执行其他的代码。Event Loop 正是负责执行队列中的回调并且将其压入到函数调用栈中