gpt4 book ai didi

javascript - JavaScript 如何在后台处理 AJAX 响应?

转载 作者:IT王子 更新时间:2023-10-29 02:37:28 26 4
gpt4 key购买 nike

由于 JavaScript 在单线程中运行,在发出 AJAX 请求后,后台实际发生了什么?我想对此有更深入的了解,任何人都可以阐明一下吗?

最佳答案

在幕后,javascript 有一个事件队列。每次执行的 javascript 线程完成时,它都会检查队列中是否还有另一个事件要处理。如果有,它会将其从队列中拉出并触发该事件(例如鼠标单击)。

位于 ajax 调用下的 native 代码网络将知道 ajax 响应何时完成,并且一个事件将被添加到 javascript 事件队列中。 native 代码如何知道 ajax 调用何时完成取决于实现。它可能是用线程实现的,也可能是事件驱动的(这并不重要)。实现的重点是当 ajax 响应完成时,一些 native 代码将知道它已经完成并将一个事件放入 JS 队列中。

如果当时没有运行 Javascript,将立即触发事件,运行 ajax 响应处理程序。如果当时有东西在运行,那么事件将在当前执行的 javascript 线程完成时得到处理。 javascript 引擎不需要进行任何轮询。当一段 Javascript 完成执行时,JS 引擎只是检查事件队列,看看是否还有其他需要运行的东西。如果是,它将从队列中弹出下一个事件并执行它(调用为该事件注册的一个或多个回调函数)。如果事件队列中没有任何内容,则 JS 解释器有空闲时间(垃圾收集或空闲),直到某个外部代理将其他内容放入事件队列并再次唤醒它。

因为所有外部事件都通过事件队列,并且在 javascript 实际上运行其他东西时不会触发任何事件,所以它保持单线程。

下面是一些文章的详细介绍:

关于javascript - JavaScript 如何在后台处理 AJAX 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7575589/

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