$interval/$timeoutでの注意点

angular v0.1.2系を使っている時にハマった点

$interval/$timeoutを使用すると、 $rootScope.apply()が実行されるためfilter系がすべて更新されて激重になる。

$interval

$interval(function() {
  console.log('$internal')
}), 100, 0, false);

上記の第4引数のパラメーターに$rootScope.apply()を行わないためのbooleanを入れることができるが、$rootScope.apply()は避けられても、 $interval内部で行われているdefferで$evalAsyncを読んでるため、結果タイミングはscopeが更新されてしまうっていう・・・w

fix($timeout/$interval): if invokeApply is false, do not use evalAsync by caitp · Pull Request #7999 · angular/angular.js · GitHub

v0.1.3系では修正されているが、現在はベータなんだよなぁ・・・ ベータならv0.1.2系にも入れておいてほしいな