为什么内联 XMLHttpRequest 在稍后的外部 <script> 请求之后启动?

用户184190

我有一个内联 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 的请求之前开始

StarDrop9

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么叫XMLHttpRequest?

为什么我们对脚本使用<script>而不对外部CSS使用<style>?

同步XMLHttpRequest警告和<script>

为什么编译无法对Consumer <ZipEntry>进行内联,而是在外部工作?

IE https CORS XHR请求因Script7002而失败:XMLHttpRequest:网络错误0x2eff

尝试使用XMLHttpRequest进行CORS请求时,IE10和IE11 SCRIPT5 Acess is Denied错误

XMLHttpRequest创建多个传出端口-为什么?

为什么Tampermonkey的GM_xmlhttpRequest可以执行CORS请求?

为什么必须内联在类外部(但在头文件中)定义的类成员函数?

并行文件上传XMLHttpRequest请求以及为什么它们不起作用

XmlHttpRequest请求元素为None

为什么XMLHttpRequest上传在Firefox中无法正常失败?

为什么我的XMLHttpRequest得到robots.txt响应

为什么内联<script>标记不显示值?

为什么XMLHttpRequest responseText不存在?

如何从外部脚本中止XMLHttpRequest.upload?

为什么我的jQuery可以内联而不是外部工作?

为什么在双重网络请求后获取外部JSX模板?

SVG:为什么外部CSS会覆盖文本的内联样式?

Javascript XMLHttpRequest onreadystatechanged无法启动?

稍后重新启动,但是什么时候?

XMLHTTPRequest()之后的Java语言返回

稍后回复AJAX请求

内联Java脚本和外部Java Script相互阻止

为什么 React Native 在 JavaScriptCore 中重新实现了 XMLHttpRequest?

SCRIPT7002:XMLHttpRequest:网络错误 0x80070005,预检请求成功后拒绝访问

为什么使用 XMLHttpRequest (XHR) 而不是 HTTP 206 Partial Content?

为什么外部JS不会启动?

为什么 XMLHttpRequest 请求正文返回 null?