我目前正在探索angularjs中的$ http,并且我已经看到了这个超级惊人的方法:useApplyAsync
它会同步我的$ http请求,并会让我的应用更快。
一切都很好,但为什么默认情况下angularjs会将其设置为false?使用它有什么缺点吗?
我还在使用useApplyAsync
和不使用它之间进行了比较。
我在这里使用它:http://jsfiddle.net/vwnLz344/17/ 在这里,我没有使用它:http://jsfiddle.net/vwnLz344/18/
我无法看到它的优点......
我所寻找的是:useApplyAsync
答案 0 :(得分:3)
可能没有与较小的应用程序产生巨大差异 - 通过事物useApplyAsync
的声音将延迟处理约10毫秒但聚合响应的处理因此如果说多个响应在其中的话可能会稍快一些窗口它可能允许他们共享一个摘要周期,避免额外的开销。
默认行为更快地处理每个单独的响应(我认为是同步的)但如果快速连续接收到多个响应可能需要更多的摘要周期,这可能需要更多处理,因此总体上更慢。
如此简短的回答useApplyAsync
可能更快,许多快速请求会更新大量数据,默认行为可能会更快,请求频率更低。
我猜它默认情况下是禁用的,因为通常情况下,您可能需要重新考虑许多AJAX请求(即提供合并请求的选项)。
启用useApplyAsync的优势
如果短时间内收到多个回复,可能会减少所需的摘要周期数量
启用useApplyAsync
的缺点在等待聚合处理时,它可能会将响应处理延迟~10ms
为什么默认情况下会被停用?
将大多数AJAX请求的处理延迟大约10毫秒,以便短时间窗口尝试同时处理多个响应并避免额外的摘要周期,这对于大多数用例来说比通过启用它可能节省的几个额外摘要周期更不可取。
相关文档有更多信息
https://docs.angularjs.org/api/ng/provider/$httpProvider#useApplyAsync
<强> useApplyAsync([值]); 强>
“配置$ http服务以组合多个http的处理 大约在同一时间通过$ rootScope收到的回复。$ applyAsync。 这可以显着提高性能 同时发出许多HTTP请求的应用程序(在 应用程序引导程序)。 “
https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$applyAsync
<强> $ applyAsync([曝光]); 强>
安排$ apply的调用以后发生。实际上 时间差异因浏览器而异,但通常约为10 毫秒。
https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply
<强> $申请([曝光]); 强>
$ apply()用于从角度框架外部以角度执行表达式。 (例如,来自浏览器DOM事件,setTimeout,XHR或第三方库)。因为我们正在调用角度框架,所以我们需要执行异常处理的适当范围生命周期,执行监视。