0

这是我的工厂:

// 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 比第二次更容易缓存请求。感谢任何看过这个的人。

4

1 回答 1

0

可能是您的第一个示例根本不依赖BuildingListService?不应该是这样的吗?:

$scope.selectBuilding = function(building) {
  BuildingListService.selectBuilding(building, function() {
    $state.go('requests.detail.analystReview');
  });
};
于 2014-06-02T22:36:01.210 回答