通过async /await解决for循环里嵌套query异步函数存在的异步问题!

            //定义图层
            var gLayer = new _GraphicsLayer();
            var pLayer = new _GraphicsLayer();
            map.addLayers([pLayer, gLayer]);

            //全局对象 设置查询参数
            var intersector, area_id;
            var queryTask = new _QueryTask("********/MapServer/2");
            var query = new _Query();
            query.outFields = ["*"];
            query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
            query.returnGeometry = true;
            //获取巡检片区
            getInspArea();
            function getInspArea() {
                $.ajax({
                    type: "get",
                    url: "./test0128.ashx?m=getInspectionArea",
                    dataType: "json",
                    success: function (data) {
                        console.log(data);
                        QueryByInsparea(data);
                    }
                });
            }
            //通过巡检片区来查询  
            async function QueryByInsparea(data) {
                for (var i = 0; i < data.length; i++) {
                    var inspection_area = data[i];
                    area_id = inspection_area.AREA_ID;
                    //获取片区要素类
                    var path = inspection_area.PATH;
                    intersector = new _Polygon(JSON.parse(path).geometry);
                    pLayer.add(new _Graphic(intersector, new SimpleFillSymbol()));
                    query.geometry = intersector;
                    //进行查询
                    await queryTask.execute(query, getIntersect);
                }
            }
            //获取相交部分
            function getIntersect(result) {
                //console.log(result);
                //查询到得要素
                var features = result.features;
                var gemetries = [];
                for (var i = 0; i < features.length; i++) {
                    var feature = features[i];
                    gemetries.push(feature.geometry);
                    feature.setSymbol(new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
                        new Color([0, 0, 255]), 5));
                    //gLayer.add(feature);

                }
                //对查询到得要素进行合并
                var union = geometryEngine.union(gemetries);
                //合并要素与片区要素进行相交分析
                var intersect = geometryEngine.intersect(union, intersector);
                console.log(intersect);
                var intersectGra = new _Graphic(intersect, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
                    new Color([255, 255, 0]), 5));
                gLayer.add(intersectGra);
            }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值