angularjs - Safari 中的混合 AngularJS 和 Angular 应用程序性能低下

标签 angularjs angular safari zonejs ng-flow

我最近开始使用升级模块将 AngularJS 应用程序迁移到 Angular 4。

我的 AngularJS 指令之一使用第三方库 ( ngFlow ) 使用 XMLHttpRequest.send() 上传文件。在混合模式下运行时,上传在 Chrome 和 Firefox 中都可以正常工作。但是,在 Safari 中,应用程序在上传过程中变得非常慢,并且浏览器进程的 CPU 使用率达到 100%。

使用 Safari 网络工具,我发现有很多来自 zone.js 的 globalZoneAwareCallback 调用。

我的印象是 Angular 区域正在为上传期间发生的每个 XMLHttpRequest 进度事件启动更改检测。

我知道我可以使用 NgZone 中的 runOutsideAngular 来避免这种情况,但我不知道如何在发生异步调用的情况下使用它在第三方 AngularJS 库中,或者是否有任何其他解决方案来解决此问题。

最佳答案

最后我设法使用 runOutsideAngular 解决了这个问题。

首先,我降级了 NgZone 模块以在我的 AngularJS 代码中使用它:

factory('ngZone', downgradeInjectable(NgZone));

然后我在上传指令中注入(inject)了服务,并使用它来运行 Angular 区域之外的文件上传:

ngZone.runOutsideAngular(() => $flow.upload());

关于angularjs - Safari 中的混合 AngularJS 和 Angular 应用程序性能低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45447319/

相关文章:

ios - 将 Angular 重定向与 wkwebview 一起使用

Angular 2 - 确定注入(inject)器实例化服务的指令?

Angular2 从模块导入组件/服务

javascript - 如何构建多部分 MIME 请求并使用 AngularJS 的 $http 方法发布它?

javascript - 将 jQuery 命名空间注入(inject) AngularJS

javascript - 根据另一个选择 Angular 过滤选择并保留第一行

javascript - 如何在 Highcharts 中创建曲线下的突出区域?

windows - 在 Windows 10 PC 上的 iOS 13+ 上调试 Safari

CSS 悬停背景更改不适用于 Safari

ios - Facebook 请求通知未显示在 iOS 移动版 safari 中,而是显示在 native facebook 应用程序中