我有一个内联 XMLHttpRequest<head>
只是为了看看我是否可以使它成为浏览器发出的第一个请求(在主 html 文件之后)。在该请求之后,我立即获得了一个外部资源:
<head>
<script>
...some code...
var xhr = new XMLHttpRequest();
xhr.open('GET', '/get_data');
...etc...
xhr.send();
</script>
<script src="/some/other/file.js"></script>
</head>
为什么在 Chrome 开发者工具的网络选项卡中,对 file.js的请求会在对 /get_data 的请求之前开始?
XMLHttpRequest() 由 XHR API 处理。在浏览器处理较低级别的任务之后运行。所以我猜外部脚本中没有任何网络任务。如果确实如此,它们将在第一个 XMLHttpRequest() 之后被调用,但不一定首先完成,因为它们是异步任务。
XHR 的真正原因是处理从客户端到服务器的异步网络数据请求。
基本脚本化任务将按列出的顺序完成,浏览器将按照您期望的顺序在浏览器基本处理级别完成。完成后,XHR API 就会启动。
这是一个很好的 XHR API 参考链接https://hpbn.co/xmlhttprequest/
下面是一个很好的摘录。
XHR 是浏览器提供的应用程序 API,也就是说浏览器会自动处理所有底层的连接管理、协议协商、HTTP 请求的格式化等等:
浏览器管理连接建立、池化和终止。
浏览器确定最佳 HTTP(S) 传输(HTTP/1.0、1.1、2)。
浏览器处理 HTTP 缓存、重定向和内容类型协商。
浏览器强制执行安全、身份验证和隐私约束。
和更多…
无需担心所有底层细节,我们的应用程序可以专注于发起请求、管理其进度和处理从服务器返回的数据的业务逻辑。简单的 API 及其在所有浏览器中无处不在的可用性相结合,使 XHR 成为浏览器中网络的“瑞士军刀”。
结束语:您始终可以将您的 Get 请求放在 .js 文件中,它会在另一个文件之前处理,但同样,所有基本 HTML 和其他浏览器基本任务以及这两个文件中的处理都将在 XHR API 启动之前完成。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句