Angular + RxJS + Esri 要素层查询功能 - applyEdits 操作管道和重试操作

问题描述 投票:0回答:1

我正在尝试构建一个应用程序,其中 vpn 连接起着关键作用,因此如果用户断开与其 vpn 的连接,如果 vpn 以某种方式再次连接,我想继续尝试查询或尝试对要素图层应用编辑。这是我迄今为止尝试过的

    const testFeatureLayer = new FeatureLayer({ url: LAYERDETAILS.TEST.url})
    var query = testFeatureLayer.createQuery();
    query.where = '1=1'
    query.outFields = ['*']
    from(testFeatureLayer.queryFeatures(query)).pipe(
      retry({
        count:50,
        delay: 1000, // 2 second delay between retries
        resetOnSuccess: true
      }),
      catchError((error) => {
        console.error('Failed after all retries:', error);
        return throwError(() => error);
      })
    ).subscribe({
      next: (response) => {
        console.log('Query response:', response);
      },
      error: (error) => {
        console.error('Final error:', error);
      }
    });

这是 Esri 要素图层; https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html

此方法查询特征->(方法)__esri.FeatureLayer.queryFeatures(query?: __esri.Query | __esri.QueryProperties, options?: __esri.FeatureLayerQueryFeaturesOptions): Promise<__esri.FeatureSet>

我尝试过使用 from 或 with of 来做到这一点,但我没有运气。

angular rxjs esri arcgis-js-api
1个回答
0
投票

我使用

of
map
运算符模拟 API 调用,我发现只有一件事需要更改,那就是
throwError
可以返回错误,而不是值。

...
catchError((error: any) => {
  console.error('Failed after all retries:', error);
  return throwError(() => new Error(error)); // <- changed here!
})
...

Stackblitz 演示

© www.soinside.com 2019 - 2024. All rights reserved.