8

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

以及如何使用 Restangular 为 ajax/$http 调用编写一个通过 Timeout 重试的包装器。一个工厂??

谢谢,莉娜。

4

1 回答 1

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
于 2013-10-29T07:07:06.687 回答