AngularJS $q.all timeout

AngularJS $q.all timeout

本文关键字:timeout all AngularJS      更新时间:2023-09-26

我正在使用AngularJS的$q函数将几个承诺组合在一起。但是,我还想设置一个超时来取消此承诺,并在一定时间后对这些承诺中的任何一个没有任何响应时执行其他操作。这可能吗?

法典:

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

$httpget方法可以采用配置对象。此配置对象的支持参数之一是 timeout 。请参阅文档

您可以将超时值传递给http配置,如果任何操作需要更多时间,则完整的$q承诺将被拒绝。