我有一个发送多个 http 请求的服务“UserData”。对于每个请求的成功处理程序,调用一个函数(在控制器中)。此函数打印出本地存储中的所有内容(对于此示例,假设为 5 个项目)并将它们全部删除。
根据我对 javascript 的理解,所有内容都在单个线程中执行。这意味着即使可能同时调用多个回调,它们也会被顺序处理(一个接一个)。现在,当第一个回调循环通过 localStorage 并删除所有项目时,我希望所有后续回调都不会从 localStorage 打印任何内容,因为所有项目都应该已经被删除。
但是当我测试这个理论时,每次回调都会打印出本地存储中的所有 5 个项目。这可能更像是一个 javascript 问题而不是一个角度问题,但任何见解都会受到赞赏。
服务:
app.factory('UserData', ['$http',
function($http) {
return {
save: function(data, apiEndpoint, scope) {
$http({method: 'PUT', url: apiEndpoint,
headers: {
'Content-Type': 'application/x-www-form-urlencoded' },
data: data}).
success(function(data, status, headers, config) {
scope.processFailedQueue();
}).
error(function(rdata, status, headers, config) {
});
}
};
}
]);
控制器:
function baseFunctionController($scope, $location, $route, $http, contentService, UserData) {
$scope.processFailedQueue = function() {
for (var i = 0; i < localStorage.length; i++){
console.log(localStorage.key(i));
}
for (var i = 0; i < localStorage.length; i++){
localStorage.removeItem(localStorage.key(i));
}
}
}