FirebenchはAngular/Zoneの猿のパッチを当てるwebSocketとsetInterval
などのため、変更の検出をトリガーする多くの内部非同期呼び出しを使用します。私のアプリケーションとやりとりしていないときでも、特にモバイルでの処理速度を低下させる原因となります。どのようにして、FirebaseがAngular 2で変更検出を繰り返しトリガするのを防ぐことができますか?
このデフォルトの動作は便利かもしれませんが、私がFirebaseを使用している方法では、ビューを更新する必要がある時をかなり厳密に制御しているので、Firebaseのコールバックは変更検出が行われるようにとにかく手動で。
変更検出器の戦略をOnPush
に設定するとわかりましたが、これは私が取り組んでいるところですが、あらゆる角度から攻撃したいと思います。
私はゾーンのrunOutsideAngular
に精通していますが、Firebaseモジュール内ですべての非同期呼び出しが行われているので、今ここでそれを適用することはできません。
どのようにFirebaseがすべての業務を角度ゾーン外にすることができますか?
編集:問題を示すサンプルコード:
import {Component} from '@angular/core';
@Component({
selector: 'test-component',
template: 'hello world'
})
export class TestComponent {
ref: Firebase;
constructor() {
this.ref = new Firebase('<firebase URL>');
}
ngDoCheck() {
console.log('Check the stack - this is being called continually via async functions used internally by Firebase.');
debugger;
}
}