我目前正在angularjs中探索$ http,并且已经看到了这种 super 神奇的方法:useApplyAsync
,它将同步我的$ http请求,并使我的应用程序更快。
一切都很好,但是为什么默认情况下angularjs将其设置为false?使用它有什么缺点吗?
编辑:
我还比较了使用useApplyAsync
和不使用它。
我在这里使用它:http://jsfiddle.net/vwnLz344/17/
在这里我没有使用它:http://jsfiddle.net/vwnLz344/18/
我看不到它的优点...
我要搜索的是:useApplyAsync
的优缺点
最佳答案
对于较小的应用程序,可能不会有太大的不同-声音听起来useApplyAsync
会将处理延迟约10ms,但会汇总响应的处理过程,因此,如果说在该窗口内出现多个响应,则可能会使其更快共享摘要周期,避免了额外的开销。
默认行为会更快地处理每个单独的响应(我认为是同步的),但是如果快速连续接收到多个响应,则可能需要更多的摘要周期,这可能需要更多的处理,因此整体速度较慢。
因此,对于许多更新大量数据的快速请求,简短答案useApplyAsync
可能更快,而对于频率较低的请求,默认行为可能更快。
我猜想默认情况下它是默认禁用的,如果您要触发许多AJAX请求,则可能需要重新考虑API(即提供用于合并请求的选项)。
启用useApplyAsync的优点
如果短时间内连续收到多个响应,则可能会减少所需的摘要周期
启用useApplyAsync的缺点
在等待汇总处理时可能会将响应处理延迟约10ms
为什么默认情况下禁用它?
在大多数情况下,将大多数AJAX请求的处理延迟约10ms以便在较短的时间内尝试同时处理多个响应并避免附加的摘要周期,而不是通过启用它可能节省的几个附加摘要周期。
相关文档具有更多信息
https://docs.angularjs.org/api/ng/provider/$httpProvider#useApplyAsync
https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$applyAsync
https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply