AJAX请求:同步VS异步

12

同步请求和异步请求在性能方面有什么区别(速度上)?

使用异步请求的原因有哪些?


请注意,此方法已被弃用:https://dev59.com/O2gu5IYBdhLWcg3wRlFh - Christophe Roussy
3个回答

23

在大多数情况下,您应该始终使用异步Ajax请求。实际上,我只知道一个情况需要使用同步Ajax请求,那就是如果您在Ajax请求中嵌入了一个新的JavaScript文件,并且在原始Ajax请求的返回值中引用了该JavaScript文件的类型和/或对象时。然后,获取此新JS文件应(或可以合理地)通过使用同步Ajax请求包含在内...

除此之外,您应该始终使用异步Ajax请求。最重要的原因是同步Ajax请求会使用户界面(浏览器)无响应...


这个问题仍然出现在搜索结果中 - 接受的答案已经不再是一个好的答案了。正确的形式是将事件附加到正在加载的脚本上,这就是 requirejs 所做的。 - Josh

1

@Thomas Hansen的答案是正确的,但我找到了一份明确解释异步操作优点的内容。

同步很简单,但要等待服务器响应,因此会在一段时间内阻塞调用者并且比异步处理请求慢。

异步是必需的设置,提交请求后不等待并立即将控制权返回给调用者,因此比同步更快。

当我需要使用同时具有这两种功能的上传控件时,我来到这里,并查看这种功能的优缺点。

我还找到了另一个链接,其中使用了实际示例进行了解释。(该链接是特定工具,因此请理解其逻辑)

  • 主要区别在于我们服务器的响应时间。同步上传时,会实时验证文件并创建访问代码。异步上传则会将文件发送到我们服务器的队列中,在处理完成后通过电子邮件通知您。

  • 对于多个大型CSV文件,同步上传不是理想选择,因为您需要等待服务器处理完当前文件才能提交下一个请求。对于大型文件,这也可能导致浏览器返回超时错误,因为服务器过于繁忙。如果您有多个文件,异步上传将允许您将多个文件提交到服务器队列中进行处理,并在处理完成后通过电子邮件收到回执。

https://www.aspsnippets.com/Articles/Difference-between-Synchronous-Sync-and-Asynchronous-Async-Request-Call-in-AJAX.aspx


-1

对于高度依赖数据库的应用程序来说,可能会出现严重的性能问题。虽然这种情况很少发生,但发送大量同步的ajax调用可能会导致积压。因此,如果应用程序需要频繁地向数据库发送请求,最好将其设置为异步。当设置为异步时,浏览器将放弃所有无响应的请求并继续处理新的请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接