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