为什么异步 XMLHttpRequest 优于同步请求? [关闭]

2024-07-04

异步和同步之间有什么区别?这种区别如何影响请求?


来自 Mozilla 的文章同步和异步请求 https://developer.mozilla.org/en/docs/DOM/XMLHttpRequest/Synchronous_and_Asynchronous_Requests:

XMLHttpRequest 支持同步和异步通信。然而,一般来说,出于性能原因,异步请求应优先于同步请求。

简而言之,同步请求会阻塞代码的执行,并可能泄漏内存和事件。这可能会导致严重的问题。使用同步请求的唯一可行原因是更轻松地促进 Web Workers 中的下载。

异步请求是 XMLHttpRequest 存在的主要原因。 XMLHttpRequest 支持 AJAX,其思想是让您的 JavaScript 代码运行,让您的用户对您的页面执行任何操作,同时 JavaScript 在后台与服务器通信。例如,Gmail 就以这种方式加载您的电子邮件。

同步请求会在传输完成时阻止脚本运行。简而言之,当异步请求可用时没有理由这样做。如果您的 Gmail 一直死机,那会很烦人,您不觉得吗?您很少(如果有的话)想要使用同步请求。

有些情况你必须使用同步请求 https://developer.mozilla.org/en/docs/DOM/XMLHttpRequest/Synchronous_and_Asynchronous_Requests#Irreplaceability_of_the_synchronous_use,但在这些情况之外,您可能完全没有理由发出同步请求,并且完全有理由使用异步请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么异步 XMLHttpRequest 优于同步请求? [关闭] 的相关文章

  • ng-repeat 对象属性但在键入后使输入框散焦

    我在用ng repeat将表单元素绑定到我拥有的自定义对象的属性 例如 scope myObject font size 10 text outline width 2 border color black border width 3 b
  • 如何在没有 iframe 的情况下使用 Google 表单?

    几年前 我在互联网上发现如何在联系页面中使用 Google 表单 仅使用属性提交按钮操作中的查询而不使用 iframe 现在 我再也找不到了 没有 iframe 是否仍然可以使用 Google 表单 我刚刚找到了 function post
  • 如何禁用 Mapbox 中的事件侦听器?

    我正在尝试使用 React 上的 Mapbox 来控制图层上的事件侦听器 map off 应该可以做到这一点 但它并没有删除图层中的 onclick 事件 https docs mapbox com mapbox gl js api map
  • 为什么异步 XMLHttpRequest 优于同步请求? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Titanium 中向 TableView 部分追加一行?

    我正在使用 Titanium 开发 iPhone 应用程序 并且需要将一行附加到特定的表格视图部分 https developer appcelerator com apidoc mobile 1 0 Titanium UI TableVi
  • Jquery 密码字段的默认值

    我在用这个 Jquery 插件 http mudge github com jquery example 用于使用单击时消失的文本填充输入 它对于密码字段来说并不理想 因为所有内容都显示为点 在开始输入之前使默认文本在密码字段中可见的好方法
  • 如何禁用已经预订的日期?

    我有一个预订酒店房间的表格 其中有两个字段 称为入住和退房 我在这里使用 jQuery datepicker 预订房间 我不想显示那些已经预订的日期 我已经尝试过这样的 function var excludedCheckInDates C
  • 在 C# 中使用匿名类型创建对象文字时出现问题

    我正在尝试构建 JavaScript 对象文字的 C 近似值 以传递给 asp net MVC 中的视图模型 var obj new dynamic new name Id index Id width 40 align left new
  • 通过鼠标滚轮按下事件在网站上滚动了多少像素?

    我正在编写一个自定义滚动条并正在捕捉mousewheel事件 我使用它来调整我想要滚动的元素的scrollTop 向下滚动的像素数是否有标准 或者因系统而异 我在最新版本的 Firefox 中显示 114px 许多鼠标驱动程序允许您设置鼠标
  • 计算随机生成的六边形的6个顶点

    我需要一些帮助来写方程式 我想生成仍然 完美 成比例 的随机大小的六边形 最左边的顶点将位于 0 0 我想考虑与最左边的顶点相关的其他顶点 从左顶点向上这么多 从它右边这么多 从它向下这么多 这不是那么简单的原因是因为我需要它成比例 目前
  • 替换 observableArray 中的项目

    我正在尝试替换某个项目的所有内容observableArray有新内容 var oldLocation ko utils arrayFirst self locations function item return item id valu
  • 无法使用 webpack 和 Laravel mix 加载 popper.js

    我在我的项目中使用 bootstrap 4 beta 和 Laravel 5 4 并使用 npm 和 laravel mix 加载我的 js 依赖项 到目前为止 一切都运行良好 除了当我尝试使用 booostrap js 方法时 它向我抛出
  • 内存模型中的词法作用域是什么样的?

    假设我们有一个函数 function foo var x 10 function bar var y 20 return x y return bar console log foo 这在内存模型中会是什么样子 到目前为止 这就是我想象的堆
  • php curl 获取 html 和 js 渲染

    php curl 只获取html页面的源代码 不执行js脚本 我需要我的网站获取已执行所有 JavaScript 的源代码 我使用ajax 但无法在页面中添加更多js 因为当我加载另一个页面时脚本会保留 我找到了 SpiderMonkey
  • Angular ui - 选项卡控制器执行多次

    当我单击一个选项卡时 相应的控制器会执行 4 次 为什么 E g DetailsPersonController s init函数执行了4次 仅应在加载选项卡视图后执行 HTML 标签
  • 如何为cordova应用程序创建一个单独的目录并在其中存储数据?

    我想为我的 cordova 项目创建一个特定的目录 我不知道该怎么办 我提到了这样的链接 如何将文件移动到应用程序目录cordova https stackoverflow com questions 27765007 how to mov
  • 如何在新窗口中获取dom元素?

    JavaScript 中的一个简单任务是打开一个新窗口并在其中写入 但我需要在一个dom元素中写入一个带有ID的div var novoForm window open somform html wFormx width 800 heigh
  • for循环中的appendChild只添加1个孩子

    在 JavaScript 中 我使用 HTML 表格创建一个网格 您在 Photoshop 中看到的网格类型 网格大小是可变的 即可以由用户更改 因此必须计算每个网格方块的大小并将其除以可用像素数以获得精确大小的网格 我已经完成了所有这些
  • 有没有可靠的方法在 IE11 中使用 ctx.drawImage() ?

    我有一个脚本 可以根据数据查询创建动态 SVG 图形 我需要将它们粘贴到 PDF 中 为此我使用 jsPDF 不幸的是 jsPDF 自己的 addSVG 似乎不起作用 所以我花了一些时间尝试使用画布将 SVG 转换为 PNG 我似乎可以将
  • 当更改来自另一个函数时,onchange 事件不会触发

    我有一个输入文本 它从 Javascript 函数 带有倒计时的计时器 获取他的值 我想在输入文本为 0 时引发一个事件 所以我使用更改事件监听器 不幸的是 当更改来自 javascript 函数时 它似乎不会引发该事件 即使更改来自 Ja

随机推荐