Javascript 是什么原因引起的;“已安装计时器”;或;“计时器已移除”;在Firebase应用程序中?

Javascript 是什么原因引起的;“已安装计时器”;或;“计时器已移除”;在Firebase应用程序中?,javascript,angularjs,cordova,firebase,angularfire,Javascript,Angularjs,Cordova,Firebase,Angularfire,我有一个Cordova/AngularJS/Firebase应用程序,它利用了AngularFire库 我正在尝试解决一些性能问题,主要是“恢复”功能,当应用程序从后台重新打开时,它似乎会冻结几秒钟 我在safari中的远程评测显示,有几个“timer installed”和“timer removed”被调用,一行多达50个。在这个过程中,应用程序被冻结,有人能告诉我一个方向来尝试修复这个问题吗?我需要处理一些资源吗?Angular fire文档说,当包含手表的控制器作用域被销毁时,所有手表都

我有一个Cordova/AngularJS/Firebase应用程序,它利用了AngularFire库

我正在尝试解决一些性能问题,主要是“恢复”功能,当应用程序从后台重新打开时,它似乎会冻结几秒钟

我在safari中的远程评测显示,有几个“timer installed”和“timer removed”被调用,一行多达50个。在这个过程中,应用程序被冻结,有人能告诉我一个方向来尝试修复这个问题吗?我需要处理一些资源吗?Angular fire文档说,当包含手表的控制器作用域被销毁时,所有手表都会被销毁。我如何进一步调试它以了解发生了什么

我有几个服务类遵循这样的模式打开连接:

(function () {

angular.module('myApp').service('someService', 
          ['$firebaseObject', 
           '$firebaseArray', 
           '$rootScope',
 function ($firebaseObject, $firebaseArray, $rootScope) {


    this.dbUsers = firebase.database().ref('users');
    this.dbNotifications = firebase.database().ref('notifications');
    this.dbMessages = firebase.database().ref('messages');



}]);//fireService

})();

我应该处理这些连接还是以某种方式关闭它们?我的控制器经常访问这些服务,所有这些服务在开始时都会打开连接,如本例所示

或者有大量事件队列,正在播放catchup,或者您意外地有多个连接。如果看不到代码,就不可能更具体。

可能是因为有大量事件队列并且正在播放catchup,或者您意外地有多个连接。如果不看代码,就不可能说得更具体。

从您的问题中的这句话:

我正在尝试修复一些性能问题,主要是当应用程序从后台重新打开时的“恢复”功能 冻结几秒钟

看起来你加载了很多数据,冻结了应用程序。真正的解决方案是限制试图显示的行数


有两种常见的解决方案:

将结果分页 您可以使用AngularUI指令作为示例。另请参见如何在Angular应用程序上使用它

使用
limito
过滤器 这个解决方案在性能方面不太好,但可能更好地适应您的需要(因为您可能无法编辑服务器端)

是一个核心角度指令,允许您限制
ng repeat
显示的行数(在以下示例中为50):


  • {{i}
显示更多结果
从你的问题中的这句话:

我正在尝试修复一些性能问题,主要是当应用程序从后台重新打开时的“恢复”功能 冻结几秒钟

看起来你加载了很多数据,冻结了应用程序。真正的解决方案是限制试图显示的行数


有两种常见的解决方案:

将结果分页 您可以使用AngularUI指令作为示例。另请参见如何在Angular应用程序上使用它

使用
limito
过滤器 这个解决方案在性能方面不太好,但可能更好地适应您的需要(因为您可能无法编辑服务器端)

是一个核心角度指令,允许您限制
ng repeat
显示的行数(在以下示例中为50):


  • {{i}
显示更多结果
多重连接可能是我的问题。由于控制器资源已被释放,所以可能就是我在angular service类中打开连接的地方。如果我做了像。。。this.db=firebase.database().ref('events');在服务类中,我应该做些什么来释放此资源或关闭此连接?感谢您的帮助无论您的连接在哪里打开,您都可以在上面添加所有相关代码吗?我在上面添加了一段代码,它涉及到我的服务是如何为打开连接而构建的。如果您还需要了解更多内容,请告诉我,但基本上我的服务类在顶部定义了这些连接,然后它们被整个服务类的函数使用。多个连接可能是我的问题。由于控制器资源已被释放,所以可能就是我在angular service类中打开连接的地方。如果我做了像。。。this.db=firebase.database().ref('events');在服务类中,我应该做些什么来释放此资源或关闭此连接?感谢您的帮助无论您的连接在哪里打开,您都可以在上面添加所有相关代码吗?我在上面添加了一段代码,它涉及到我的服务是如何为打开连接而构建的。如果您还需要查看更多内容,请告诉我,但基本上我的服务类在顶部定义了这些连接,然后它们被整个服务类的函数使用。
<tr ng-repeat="item in items | limitTo: 50">{{item}}</tr>