考虑这个 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 回复。