如何实现超时&重试Restangular

时间:2013-08-31 08:36:33

标签: angularjs restangular

Restangular中是否有任何内置方式可以为ajax / $ http调用提供超时?

如何使用Restangular为ajax / $ http调用写一个包装到Retry by Timeout。一家工厂??

谢谢,leena。

1 个答案:

答案 0 :(得分:8)

您可以在RestangularProvider的配置中使用setDefaultHttpFields设置默认超时。 Restangular将在内部实现重试逻辑,您可以通过播放例如自己来看到这一点。 iOS网络护发素(设置 - >开发人员)。但是,如果需要重试,则需要自己实现重试逻辑。何时达到超时。

您可以在Restangular模型中配置默认​​值,因为您还可以为单个Restangular提供程序设置选项。 例如,SessionRestangular和AuthenticationRestangular都共享module.config中定义的设置,但只有SessionRestangular将在HTTP头中发送“token”和“user_id”:

module = angular.module('SessionModel', ['restangular'])

module.config (RestangularProvider) ->
  RestangularProvider.setBaseUrl('https://api.provid.er/v1')

  RestangularProvider.setDefaultHttpFields
    timeout: 10000 # Milliseconds


module.factory 'SessionRestangular', (Restangular, sessionService) ->  
  return Restangular.withConfig (RestangularConfigurer) ->   
    RestangularConfigurer.setDefaultHeaders
      'user_id': sessionService.getUserId(),
      'token': sessionService.getToken()


module.factory 'AuthenticationRestangular', (Restangular) ->
  return Restangular