Abh*_*ire 2 javascript multithreading asynchronous event-loop
我试图理解异步 JavaScript,但我想知道的一件事是,事件循环是否在主线程上运行?如果是这样,是否所有同步代码都Main()必须经过事件循环?(例如,console.log("Hello")还必须经过事件循环吗?)
并且事件循环是唯一允许将函数推送到调用堆栈的循环吗?
是的,事件循环与主函数在同一线程上运行。
不,事件循环在主函数返回之前不会开始处理消息。 console.log()是同步的(虽然可能有一些异步进程参与生成控制台输出,但它们与事件循环无关)。
函数(或更准确地说是函数的堆栈帧)进入调用堆栈的方式只有一种——该函数由当前位于堆栈顶部的任何内容调用。当函数返回或抛出时,该函数将从调用堆栈中删除。在线程中,堆栈顶部的函数是当前正在运行的函数。
事件循环位于堆栈的底部,或者至少位于所有 JavaScript 函数的下方,因此只有当所有先前运行的 JavaScript 函数返回或抛出时,它才会运行。
| 归档时间: |
|
| 查看次数: |
2964 次 |
| 最近记录: |