2013-05-01 41 views
3

异步和同步之间有什么区别,差异如何影响请求?为什么异步XMLHttpRequests优先于同步请求?

+4

它不会影响* request *,因为它影响浏览器,因此影响用户的体验。同步请求会导致浏览器在等待响应时或多或少地“冻结”。 – Pointy 2013-05-01 23:38:40

+0

你能解释为什么你认为他们是“首选”吗?就像每个工具一样,使用异步或同步请求有很多好时光和不好的时候。 – 2013-05-01 23:39:37

+0

@PlatinumAzure:不,他不会 - 否则他不会问:-) – Bergi 2013-05-01 23:40:41

回答

5

从Mozilla的文章上Synchronous and asynchronous requests

XMLHttpRequest的支持同步和异步通信。但是,通常,出于性能原因,异步请求应该优先于同步请求。

简而言之,同步请求会阻止代码的执行,并可能泄漏内存和事件。这可能会导致严重问题。使用同步请求的唯一可行原因是更容易方便Web Worker中的下载。

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

同步请求在传输完成时阻止脚本运行。简而言之,当异步请求可用时,没有理由这样做。如果您的Gmail始终处于冻结状态,这会非常令人讨厌,您不觉得吗?你很少,如果有的话,想要使用同步请求。

There are circumstances you must use a synchronous request,但在这些情况之外,您可能完全没有理由发出同步请求,以及使用异步请求的每个理由。

2

异步请求允许您的脚本在等待服务器回复时继续运行并执行其他操作。

同步请求会阻止脚本的执行,直到收到答复为止。这意味着您的应用程序将无响应,并且无法执行其他任何操作。

+0

什么(显然很少见)情况下,同步请求会对开发人员更有用? – 2013-05-01 23:47:35

+1

当事情需要按顺序发生时,或者一个请求取决于另一个请求的运行结果。 – 2013-05-01 23:48:59

+1

@Mark:即便如此,其他方式可以轻松链接异步请求(关键字:承诺,队列) – 2013-05-01 23:51:53