【问题标题】:AngularJS $q.all timeoutAngularJS $q.all 超时
【发布时间】:2013-11-11 15:31:30
【问题描述】:

我正在使用 AngularJS 的 $q 函数将几个 Promise 组合在一起。但是,我也想设置一个超时来取消这个承诺,如果在一段时间后没有对这些承诺中的任何一个做出任何响应,我会做其他事情。这可能吗?

代码:

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

【问题讨论】:

    标签: javascript angularjs promise q


    【解决方案1】:

    $httpget 方法可以接受一个配置对象。此配置对象的支持参数之一是timeoutSee documentation

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

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 2014-04-05
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2018-03-13
      • 2014-10-06
      • 1970-01-01
      相关资源
      最近更新 更多