gpt4 book ai didi

javascript - 事件处理程序如何在 javascript 内部执行?

转载 作者:行者123 更新时间:2023-11-29 10:57:38 25 4
gpt4 key购买 nike

我理解javascript是单线程的,任何异步任务只有在当前栈为空后才会执行。回调、setTimeout、promises 仅在当前函数完成后执行。

我想知道当我执行某些事件时,浏览器如何调用我的事件处理函数。

当我们说我们正在注册一个事件时,我们在哪里注册它? (消息队列,作业队列)?它保存在内存中的什么位置,浏览器如何知道某个事件已经发生?

事件与操作系统调用有关吗?

我看过philip roberts video我了解事件循环的功能。

我想了解 javascript 的内部结构。

最佳答案

When we say we are registering an event, where are we registering it? Where does it get saved in memory?

处理函数安装在您正在收听的资源上。对于 DOM 事件,它是浏览器用于显示文档的 DOM 对象,对于 promise 它是一个 JS 对象,对于计时器,有一个内部计时器对象(与 DOM 相关,因为计时器是在 HTML 中和每个窗口中定义的)。

(message queue, job queue)?

不,当一个事件处理程序被注册时那些保持空。只有当事件实际发生时,需要运行的处理程序才会被放入队列。

How does the browser know that some event has occurred? Are events related to operating systems call?

是的,最终事件来自操作系统,无论是网络数据包到达、超时发生还是浏览器窗口上的点击。 (只有极少数事件是从浏览器机器本身内部触发的)。浏览器然后检查哪些资源受到系统事件的影响(例如,单击了哪个 DOM 元素),然后触发相应的事件,以便它可以根据需要安排任何处理程序。

关于javascript - 事件处理程序如何在 javascript 内部执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53999168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com