ビューを更新する Angular Js の非常に標準的なメソッドの例を考えてみましょう。
$scope.fetchResults = function() {
// Some local variable that will cause creation of closure
var hugeData = serviceX.getMilionRecords();
// Any call to any resource with success and error handlers.
$http({
method: "GET",
url: "/rest-api/bulk-operation-x",
params: { someParam: hugeData.length }
}).success( function () {
var length = hugeData.length;
$scope.reportToUser("Success, that was " + length + " records being processed!";
}).error( function () {
var length = hugeData.length;
$scope.reportToUser("Something went wrong while processing " + length + " records... :-(";
});
};
これはもちろん架空の例ですが、 AJAX コールバック内からのローカル変数の再利用として説明できるパターンをうまく示しています。
もちろん両方のハンドラー (success
と) で、コールバック ハンドラーから直接参照されるerror
クロージャーを作成しています。hugeData
私の質問は次のとおりです。AJAX 呼び出しの結果は成功または失敗のいずれかしかあり得ないため、このコードを再利用すると時間の経過とともにメモリ リークが発生しますか? 私は「はい」と答えますが、ローカル テストでこれを確実に証明することはできませんでした。
もっと経験豊富なグルにこれを説明してもらいたいです。Angular を日常的に使用している方からの返信をお待ちしておりますが、jquery からの返信も大歓迎です。