2013-11-11 2 views
0

Я использую функцию $ q от AngularJS для группировки нескольких обещаний. Тем не менее, я также хочу установить тайм-аут, чтобы отменить это обещание и сделать что-то еще, если нет какого-либо ответа на какое-либо из этих обещаний через определенное время. Это возможно?

Код:

var data = {}; 
var map_dataFile = $http.get("GET Request 1"), 
    node_dataFile = $http.get("GET Request 2"), 
    country_data = $http.get("GET Request 3"), 
    shipment_data = $http.get("GET Request 4"), 
    location_data = $http.get("GET Request 5"); 
$q.all([map_dataFile, node_dataFile, country_data, shipment_data, location_data]).then(function(results) { 
    data.countries = results[0].data; 
    data.nodes = results[1].data; 
    data.countries_indicator = results[2].data; 
    data.shipment_flows = results[3].data; 
    data.location_data = results[4].data; 
}); 
//do something else if it takes more than 10s, and cancel the $q.all promise 

ответ

3

$http и метод get может принимать объект конфигурации. Одним из поддерживающих параметров в этом конфигурационном объекте является timeout. See documentation

Вы можете передать значение тайм-аута в конфигурацию http, и если какая-либо операция займет больше времени, то полное $q обещание будет отклонено.

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