如何在javascript引擎中实现回调?(与如何使用回调无关)

如何在javascript引擎中实现回调?(与如何使用回调无关),javascript,v8,Javascript,V8,我知道什么是回调,以及如何在javascript中使用回调。我的问题是javascript引擎(如V8)如何实现回调?回调机制在异步事件处理中无处不在,例如事件回调、数据库查询 它是在一个真正的循环中吗?或其他形式,例如使用select.epoll() 如果一个javascript应用程序中有一万次回调,会不会减慢整个过程 从本质上讲,javascript代码被编译成一个名为的数据结构,该数据结构可以存储在 V8不一定管理回调的调用或管理循环,而是确保其结构的所有执行发生在同一个线程中,然后依靠

我知道什么是回调,以及如何在javascript中使用回调。我的问题是javascript引擎(如V8)如何实现回调?回调机制在异步事件处理中无处不在,例如事件回调、数据库查询

它是在一个真正的循环中吗?或其他形式,例如使用select.epoll()


如果一个javascript应用程序中有一万次回调,会不会减慢整个过程

从本质上讲,javascript代码被编译成一个名为的数据结构,该数据结构可以存储在

V8不一定管理回调的调用或管理循环,而是确保其结构的所有执行发生在同一个线程中,然后依靠底层引擎管理后台线程中完成的工作以及事件循环和调用回调

例如,nodejs用于其底层运行时功能,包括在主线程中管理的

在调用函数时,它最终将分派到一个libuv函数中,该函数负责在后台线程中执行工作,然后最终负责管理将该工作推回到主事件循环中所涉及的线程

基本上,主事件循环是一个从队列中读取这些响应的循环,只要有后台线程保持活动状态,它就会继续


浏览器的工作方式非常相似,但每个浏览器都有各自相同概念的实现。

通过“回调”,您是否特别提到异步事件处理程序?您需要查找“事件循环”。@Bergi是的,我更新了问题以使其更清楚。谢谢什么事件循环?你能帮我回答这个问题吗?谢谢如果您不知道“事件循环”是什么,那么您应该研究该术语以找到问题的答案。有关node.js和V8引擎的详细信息,您需要查看并遵循其中的链接。小更正:JavaScript函数表示为
JSFunction
(在<代码> Src/Objs/js对象.h < /C>)中,它们不存储在表中。“运行时函数”是一个不同的概念,它们是V8的C++代码的特殊部分。