geoServerWFS 服务实现空间查询 - 使用 ES6 Promise.all 处理异步请求

本文介绍了如何在GIS应用中利用Promise.all处理geoServer WFS服务和ArcGIS API for JavaScript的异步请求,进行空间查询。在查询过程中,当两个服务任意一个返回结果时,通过InfoWindow展示查询结果。文章通过实例代码详细阐述了这一过程。
摘要由CSDN通过智能技术生成

前言

日常积累,欢迎指正

Promise.all的使用场景

某方法需要在多个异步操作完成后执行就可以使用Promise.all来优雅的解决,对应的还有一个Promise.race,关于它的使用和使用场景暂不讨论

实例

我的实例场景

在实现 GIS 功能中的空间查询时,我的查询对象是两个服务,并且对这两个服务的查询操作都是异步的。任意一个服务查询结果存在就代表我的空间查询操作是成功的,查询操作成功后我需要使用 InfoWindow 来展示我刚才查询到的结果。这就意味着我需要等待两个异步全部完成后才能做后续操作。

我的代码实例

this.调用的变量理解成全局变量即可

// 
this.map.on('click', (evt) => {
   
  this.evt = evt
  const circle = new Circle(evt.mapPoint)
  this.queryExtent = circle.getExtent()
  if (this.isQuery) {
   
    this.queryservices(layerTreeData, this.queryExtent) // 方法调用
  }
})


queryservices = (data, queryExtent) => {
   
  if (data && data.length > 0) {
   
    const qureyLayers = data.filter(item => item.isQuery) // 获取所有可查询数据源

    const functions: any = []
    for (const queryLayer of qureyLayers) {
   
      const f: any = this.queryservice(queryLayer.owsurl, queryLayer.layers, queryExtent)
      functions.push(f)
    }
    Promise.all(functions).then((res) => {
   
      const features: any = res.filter(item => item)
      if (featur
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值