この記事では、AngualrJ のタイマークリアで遭遇する落とし穴を中心に紹介しますので、困っている方は参考にしていただければ幸いです。
今日、カスタム命令に設定されたタイマーが、ページがジャンプした後も別のページで実行されているという奇妙な問題を発見しました。これは絶対に不可能であり、システムのパフォーマンスに影響します。
Angularのネイティブメソッドwindow.onunloadを使用しましたが、機能しなかったので、Angular独自のメソッド$destroyを使用する必要がありました。ページがジャンプしたり、DOM構造が変更されたときにタイマーをクリアできます
var timer = setInterval(function(){ $scope.$apply(function(){ //这里是想要定时刷新的逻辑 }); },3000); $scope.$on('$destroy',function(){ if (timer) { clearInterval(timer); timer = null; } });
こちら ちなみに、JavaScriptではネイティブのsetTimeout()
以及setInterval()
函数,所以清除时对应是clearTimeout()
和clearInterval()
,angular定时器是$timeOut
和$interval
,所以清除对应是$timeOut.cancel()
和$interval.cancel()
と
を使っているので、1対1に対応させないと矛盾が解消されません。
関連する推奨事項:
プログレスバー機能を実装するためのJavaScriptタイマー
以上がタイマーをクリアする際に遭遇する落とし穴を AngualrJs が解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。