我有一個服務'UserData'發送多個http請求。對於每個請求的成功處理程序,都會調用一個函數(在一個控制器中)。該功能打印出本地存儲中的所有內容(例如,可以說5個項目)並將其全部刪除。多個Ajax回調函數編輯localStorage
從我對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));
}
}
}