【问题标题】:[AngularJS]: Add timeout delay on http GET[AngularJS]:在 http GET 上添加超时延迟
【发布时间】:2016-08-10 05:18:40
【问题描述】:

当响应时间过长时如何添加超时?我的控制器中有以下内容:

$payments.getShopStatus(data.siteUrl)
  .success(function(rdata, response) {
    // go to next step
  })
  .error(function(rdata, response) {
    // tell me something's wrong
    // go here if there is a three-second delay too
  });

在我的工厂里,我有一个简单的 http return 来处理上面的那个:

 getShopStatus: function(shop) {
   var me = this;
   var sUrl = String(shop);
   var req = {
     method: 'GET',
     url: sUrl
   };

   return $http(req);
 },

在哪里添加超时/延迟?我需要在三秒无响应延迟后强制它失败。

【问题讨论】:

  • 您可以在应用配置函数中添加超时。 $httpProvider.defaults.timeout = 3000;
  • 这在我的函数中的什么地方?

标签: angularjs http timeout


【解决方案1】:

您可以在主模块应用配置函数中进行全局超时配置,如下所示。

angular.module('mainModule', [/* dependent modules */]).config(['$httpProvider', function($httpProvider){
    $httpProvider.defaults.timeout = 5000;
}]);

或者对于单个调用,您需要在 $http 调用中将超时作为参数传递,如下所示。

getShopStatus: function(shop) {
   var me = this;
   var sUrl = String(shop);       

   return $http.get(sUrl, {timeout: 5000});
 },

【讨论】:

  • 我尝试在我的 $http 请求中添加 {timeout: 5000},但它在 5 秒后并没有停止。显然,它似乎不起作用。
  • 我做了一个小调整。我将timeout 参数放在req 中,而不是上面的先前实现。它奏效了。
猜你喜欢
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多