Javascript $http.useApplyAsync的缺点是什么?

Javascript $http.useApplyAsync的缺点是什么?,javascript,angularjs,Javascript,Angularjs,我目前正在angularjs中探索$http,我看到了这个超级神奇的方法:useApplyAsync,它将同步我的$http请求,并使我的应用程序更快 都很好,但为什么默认情况下angularjs会将其设置为false?使用它有什么缺点吗 编辑: 我还比较了使用useApplyAsync和不使用它 我在这里用过: 在这里,我没有使用它: 我看不出它的优点 我在寻找的是:useApplyAsync的优点和缺点与较小的应用程序可能没有太大区别-从声音上看,useApplyAsync将延迟处理约10毫

我目前正在angularjs中探索$http,我看到了这个超级神奇的方法:
useApplyAsync
,它将同步我的$http请求,并使我的应用程序更快

都很好,但为什么默认情况下angularjs会将其设置为false?使用它有什么缺点吗

编辑: 我还比较了使用
useApplyAsync
和不使用它

我在这里用过: 在这里,我没有使用它:

我看不出它的优点


我在寻找的是:
useApplyAsync

的优点和缺点与较小的应用程序可能没有太大区别-从声音上看,
useApplyAsync
将延迟处理约10毫秒,但聚合响应处理速度可能会稍快一些,如果有多个响应的话在这个窗口内,他们可以共享一个摘要周期,避免额外的开销

默认行为会更快地处理每个响应(我认为是同步的),但如果快速连续地接收多个响应,则可能需要更多的摘要周期,这可能需要更多的处理,因此总体速度较慢

因此,简短回答
useApplyAsync
对于更新大量数据的许多快速请求可能更快,而对于频率较低的请求,默认行为可能更快

我猜它在默认情况下是禁用的,通常情况下,如果您发出了那么多AJAX请求,您可能需要重新考虑API(即提供合并请求的选项)

启用UseApplySync的优势

如果在短时间内连续收到多个响应,则可能会减少所需的摘要周期

启用UseApplySync的缺点

在等待聚合处理时,它可能会将响应处理延迟约10毫秒

为什么默认情况下会禁用它?

对于大多数用例来说,将大多数AJAX请求的处理延迟约10毫秒一个短窗口,以尝试同时处理多个响应并避免额外的摘要周期,这比启用它可能节省的几个额外摘要周期更不理想

相关文档有更多信息

useApplyAsync([value])

“将$http服务配置为组合处理多个http 几乎同时通过$rootScope.$applyAsync接收到响应。 这可以显著提高大型企业的绩效 同时发出多个HTTP请求的应用程序(在 应用程序引导)。 "

$applyAsync([exp])

将$apply的调用安排在以后进行。实际的 时间差因浏览器而异,但通常约为10秒 毫秒

$apply([exp])

$apply()用于从angular框架外部执行angular中的表达式。(例如,来自浏览器DOM事件、setTimeout、XHR或第三方库)。因为我们正在调用angular框架,所以我们需要执行异常处理、执行监视的适当范围生命周期


如果我有一个小应用程序,那么
useApplyAsync
不会影响我的API,那么为什么默认情况下不启用它呢?我还是不明白它的缺点。@PHPLover那是因为你喜欢PHP?撇开玩笑不谈,默认情况下关闭它的原因是因为这就是web当前的工作方式。您不能仅仅因为您自己看不到在特定应用程序中使用它的缺点,就强迫开发人员做一些不同的事情。语言和功能不是专门为您编写的,因此,请将“您”从等式中排除,并与可能需要同步操作的开发人员联系(这是大多数语言和功能,因此默认设置为false)。缺点是,在等待聚合请求时,可能会延迟响应处理约10毫秒,因此,假设您每100毫秒收到一个响应,您可能会将每个响应的处理延迟10毫秒,等待其他请求的聚合处理。如果在处理请求时有一点额外的延迟不如最小化摘要周期来启用它重要,那么如果延迟是关键的并且最小化摘要周期不那么重要,那么我的建议是将其保留为默认值。我认为它在默认情况下是禁用的,因为在大多数请求上会有~10ms的额外延迟<几个摘要周期saved@Brian我同意,但假设我有3个ajax请求,其中一个承诺需要在其他2个运行之前实现。我不希望它在默认情况下是异步的,但选择在情况需要时启用它。如果您必须在应用程序中聚合这些ajax调用,正如您所提到的,您需要重新审视应用程序,而不一定要优化到那种程度。@zerohero是的,这很公平,关键是使用合适的工具来完成这项工作。我可能应该对2-3个请求进行更好的澄清,这可能不值得聚合(或利用我建议的其他选项),我只认为,如果同时发出相当多的请求(我的意思是快速连续20多个请求),此选项才有价值或者,如果你有一个非常昂贵的消化周期,以及潜在的密集反应。