2016-08-10 2 views
0

Как добавить таймаут, когда ответ слишком долго реагирует? У меня есть следующий в моем контроллере:[AngularJS]: Добавить задержку таймаута по http GET

$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 для обработки выше одного:

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

    return $http(req); 
}, 

Где включать тайм-аут/медлят? Мне нужно заставить его потерпеть неудачу после трехсекундной задержки ответа.

+0

Вы можете добавить тайм-аут в свою конфигурационную функцию приложения. $ httpProvider.defaults.timeout = 3000; – sameer

+0

Это происходит в моих функциях? – ralphcarlo

ответ

0

У вас может быть глобальная конфигурация тайм-аута внутри вашей основной конфигурации приложения, как показано ниже.

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}); 
}, 
+1

Я попробовал добавить {timeout: 5000} в мой $ http-запрос, но он не остановился через 5 секунд. Кажется, это не работает. – ralphcarlo

+0

Я сделал небольшую настройку. Я поместил параметр 'timeout' в' req' вместо предыдущей реализации выше. Это сработало. – ralphcarlo

Смежные вопросы