Ionic 2视图更新变得缓慢

时间:2016-03-23 12:52:26

标签: angular ionic2

我正在使用涉及计时器的Ionic 2构建应用程序。 当计时器启动时,一切都很好,更新是即时的。但是,在Ionic View中,视图更新变得越来越慢。超时设置为32毫秒,但在计时器运行3分钟后,更新大约是秒。我还通过运行它作为Android应用程序进行测试。更新也变得越来越慢,但不像Ionic View那么慢。奇怪的是,当我触摸屏幕时,更新会立即恢复,直到我发布它。

我该如何解决这个问题?

我使用

启动计时器
ret

getUpdate函数

this.timer = setInterval(self.getUpdate(self), 32);

在视图中我只是用它来显示时间

getUpdate(self) {
    return () => {
        self.lapTime = TimerPage.formatTime(new Date().getTime() - self.startTime);
        self.cd.markForCheck();
    };
}

1 个答案:

答案 0 :(得分:1)

目前尚不清楚是什么原因造成了麻烦,没有人在5小时内提出任何建议。

可能的原因:

Angular使用 zone.js 作为change detection

跟踪所有Asynchronous事件并提供挂钩

和Angular使用这些钩子来查看Re-render视图。

如果每32ms

触发,可能会有点沉重

Solution:

向Angular的Github帐户提交了一个问题

setInterval范围内运行zone.js,如下所示

import {Component, NgZone} from 'angular2/core';

@Component({})
export class YourClass{
  constructor(public zone:NgZone){}

  setSetInterval(self){ //just a random, normal function

    this.zone.runOutsideAngular(
      //anything done here won't trigger a change detection

      this.timer = setInterval(self.getUpdate(self), 32); 
    )
  }

  getUpdate(self){
    this.zone.run(
      //to reenter the angular's parent zone and trigger a change detection

      //put your functions functionality in here
    )
  }

}