angularjs - 如何为 Retangular 实现超时和重试

标签 angularjs restangular

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

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

谢谢,莉娜。

最佳答案

您可以在 RestangularProvider 的配置中使用 setDefaultHttpFields 设置默认超时。 Restangular 将在内部实现重试逻辑,您可以通过玩例如iOS 网络调节器(设置 -> 开发人员)。但是,如果您需要重试,则需要自己实现重试逻辑。当达到超时时间。

您可以在您的 Restangular 模型中配置默认​​值,因为您还可以为单个 Retangular 提供程序设置选项。
例如,这里的 SessionRestangular 和 AuthenticationRestangular 都共享 module.config 中定义的设置,但只有 SessionRestangular 会在 HTTP header 中发送“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

关于angularjs - 如何为 Retangular 实现超时和重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18546213/

相关文章:

java - 休息 Angular 和图表 API - 需要意见

angularjs - Restangular中的.all()和.one()有什么区别?

javascript - 选择具有矩形或 Angular 嵌套数组元素

angularjs - Restangular:为什么帖子不更新集合?

angularjs - AngularJS 中的增删改查

javascript - 如何决定何时使用 ngView 或 ngInclude?

javascript - JavaScript 中的 if else 语句无法正常工作

jquery - 无法在 AngularJS 指令中检索 CSS 值

angularjs - Restangular错误拦截器-如何将自定义对象传递给不了解restangular的 Controller ?

javascript - 在 AngularJS 中调用另一个 Controller