[英]Difference between resource.save() with callback and $promise in ngResource using AngularJS
這是我的工廠:
// Factory
app.factory('BuildingListService', ['$resource', function($resource) {
return {
selectBuilding: function(building, callback) {
return $resource(window.appSettings.context+'/requests/building')
.save(building, callback);
}
};
}]);
現在,我認為這兩個代碼的行為應相同:
第一:
$scope.selectBuilding= function(building) {
BuildingListService.selectBuilding(building, function() {
$state.go('requests.detail.analystReview');
});
});
第二:
$scope.selectBuilding= function(building) {
BuildingListService.selectBuilding(building).$promise.then(function() {
$state.go('requests.detail.analystReview');
});
};
但是 ,在第一種狀態下,我遇到了爭用情況,其中服務器在更改狀態之前尚未完成請求。 我對此有些困惑。 我提到的第二種方式沒有這樣的問題。 是否有一個原因$state.go('requests.detail.analystReview');
服務器完成之前會在代碼的第一位調用它嗎? 這真的讓我感到困惑。
另請注意,解決方案之一在IE和FireFox中運行良好,我開始懷疑緩存問題
更新:所以我已經解決了我的問題,這個問題與緩存有關,IE有時會積極地緩存一些,我應該已經看到了。 但是我不確定為什么第一個調用比第二個更容易使IE緩存請求。 謝謝所有看過這個的人。
可能是您的第一個示例根本不依賴BuildingListService
嗎? 不應該是這樣嗎?:
$scope.selectBuilding = function(building) {
BuildingListService.selectBuilding(building, function() {
$state.go('requests.detail.analystReview');
});
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.