加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在AngularJS中链接未知数量的承诺

发布时间:2020-12-17 07:33:48 所属栏目:安全 来源:网络整理
导读:好吧,假设我有一系列n个XHR请求: var promises = [];var AllResults = [];$scope.requests = [ { "uri":"http://foo/bar/action1","name":"Action1" },{ "uri":"http://bar/foo/action2","name":"Action2" },{...},{...}];var ParseMyResultsArray = functi
好吧,假设我有一系列n个XHR请求:
var promises = [];
var AllResults = [];
$scope.requests = [
    {
        "uri":"http://foo/bar/action1","name":"Action1"
    },{
        "uri":"http://bar/foo/action2","name":"Action2"
    },{...},{...}
];
var ParseMyResultsArray = function(){
    console.log(AllResults);
    //...
};

angular.forEach($scope.requests,function(request){
    var promise = $http.get(request.uri);
    promises.push(promise);
});

angular.forEach(promises,function(promise){
    promise.then(function(results){
        AllResults.push(results);
    });
});

//Then,when all promise are resolved...
ParseMyResultsArray();

如果在不知道请求数组的大小的情况下解析了所有的promises,我怎么能确定调用ParseMyResultsArray()?

谢谢你的帮助!

从angular docs到 $http:

The $http API is based on the deferred/promise APIs exposed by the $q
service.

因此,可以使用$q.all()方法来获取一系列承诺,并且:

combines multiple promises into a single promise that is resolved when
all of the input promises are resolved

实现代码是:

$q.all(promises).then(function () { /* All promises are resolved */ });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读