簡體   English   中英

使用AngularJS的ngResource中帶回調的resource.save()和$ promise之間的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM