2015-10-24 2 views
2

Мы можем вручную установить таймаут для каждого $http через $http.get('url', {timeout: 5000}); Можно ли установить глобальный тайм-аут $http один раз и применим ко всему приложению?

+0

если вы заверните свои http-звонки в службу, которая делает это, то да. или пользователь какой-то $ http-перехватчик службы, также может быть сделано ... Если вам нужны примеры, дайте мне знать –

+0

@ Jony-Y Большое спасибо за ваш комментарий. Было бы неплохо, если бы вы могли показать пример, как ваше предложение может быть сделано. – user1995781

+0

в значительной степени похожий на @NetSou показал в ответ ... просто добавьте свой $ timeout там или что вы хотите, чтобы он сделал –

ответ

7

Вы можете использовать запрос http-перехватчика. Как это.

angular.module('myapp') 
    .factory('timeoutHttpInterceptor', function() { 
    return { 
     'request': function(config) { 
     config.timeout = 10000; 
     return config; 
     } 
    }; 
}); 

А потом в .config впрыснуть $ httpProvider и сделать это:

$httpProvider.interceptors.push('timeoutHttpInterceptor'); 

ИЛИ Вы можете сделать так же:

// this custom config could actually be a part of a more general app-level config 
    // so that you need to inject only one global config 
    myApp.value('http_defaults', { 
    timeout: 150 
    }); 

Здесь вы можете увидеть более простой способ Вводят выше http_defaults в каждом контроллере вы использовали $http. И установите все свойства по умолчанию HTTP-запроса.

myApp.controller('myCtrl', function ($scope, $http, http_defaults) { 

    // in case you need to change the default values for this specific request 
     // angular.extend(http_defaults, {timeout: 300}); 

     $http.get("/xyz", http_defaults) 
     .success(success) 
     .error(error); 
    }; 
}); 

You can refer this

Я хотел бы предложить использовать первый вариант.

+2

, возможно, вы знаете, что такое тайм-аут по умолчанию для службы $ http? Или нет тайм-аута по умолчанию (ждать когда-либо)? – demaniak