Promise.all处理多个异步请求

Promise.all处理多个异步请求

   自己测试用例:

   需求描述:需要多次请求后台查询选中的多个模型的构件,然后将获取的所有的构件信息进行分组显示。

let pArr = [];
            for (var i = 0; i < selectedObjecGroup.length; i++) {
                var LayerElement = selectedObjecGroup[i];
                var ElementIds = LayerElement[0].value;
                var WebFileID = LayerElement[0].key;
                pArr.push($.ajax({
                    type: "POST",
                    url: "/DesignManage/ModelView/GetElementsPropertyList?rdo=" + Math.random(),   //ajax请求地址
                    data: {
                        WebFileID: WebFileID,
                        ElementIds: JSON.stringify(ElementIds)
                    },
                    success: function (data) {
                       
                    },
                    error: function (msg) {
                        layWin.showMsg(msg, 5);
                    }, complete: function (data) {

                    }
                }));
            }
            Promise.all(pArr).then((result) => {
                let data = [];
                result.map(function (item) {
                    item.map(function (itemData) {
                        data.push(itemData)
                    })
                })
                if (data.length > 0) {
                    $.each(data, function (i, o) {
                        var BOQ = {};
                        $.each(o.properties[0].items, function (index, obj) {
                            if (obj.key == "categoryName") {
                                BOQ.categoryName = obj.value;
                            }
                            if (obj.key == "family") {
                                BOQ.family = obj.value;
                            }
                            if (obj.key == "familyType") {
                                BOQ.familyType = obj.value;
                            }
                        });
                        BOQ.volume = 0;
                        if (typeof (o.properties[1]) != "undefined") {
                            $.each(o.properties[1].items, function (index, obj) {
                                if (obj.key == "体积") {
                                    BOQ.volume = parseFloat(obj.value);
                                }
                            });
                        }
                        BOQList.push(BOQ);
                    });
                    var BOQgroup = groupBy(BOQList, function (item) {
                        return [item.categoryName];
                    });
                    $.each(BOQgroup, function (index, obj) {
                        var BOQDiv = {};
                        BOQDiv.Id = index + 1;
                        BOQDiv.categoryName = obj[0].categoryName;
                        BOQDiv.Num = obj.length;
                        BOQDiv.volume = 0;
                        $.each(obj, function (childrenindex, childrenobj) {
                            if (typeof (childrenobj.volume) != "undefined")
                                BOQDiv.volume += childrenobj.volume;
                        });
                        BOQListDiv.push(BOQDiv);
                    });
                    $.each(BOQListDiv, function (index, obj) {
                        var html = "";
                        html += '<tr class="bf-group-content">';
                        html += '<td class="bf-key tab_BOQ" style="width:45px;">' + obj.Id + '</td>';
                        html += '   <td class="bf-key tab_BOQ" style="width:100px;">' + obj.categoryName + '</td>';
                        html += '   <td class="bf-key tab_BOQ" style="width:65px;">' + obj.Num + '</td>';
                        html += '   <td class="bf-key tab_BOQ" style="width:80px;">' + obj.volume.toFixed(3) + '</td>';
                        html += '</tr > ';
                        $("#BOQDiv_Body").append(html);
                        $("#BOQMsg").hide();
                    });
                }
                else {
                    $("#BOQMsg").show();
                    $("#BOQMsg").text("暂无数据");
                }
            }).catch((error) => {
                $("#BOQMsg").show();
                $("#BOQMsg").text(error);
            })

 转自:https://www.cnblogs.com/lnlvinso/p/10787309.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值