使用Angular 2/4中的http.get()进行递归调用

时间:2018-05-15 15:15:55

标签: angular angular2-services angular4-httpclient

我有一个场景,初始请求将发送一个url路径,后续请求应该使用该路径作为使用来自服务的get请求命中的url。 (此部分已完成

现在实际问题开始了,问题是 第二 请求不会直接提供输出,而是会将状态发送为 QUEUE 直到响应完全处理完毕。我所要做的就是再次等待/点击网址,直到 QUEUE 状态更改为 OK 状态(实际响应来到此处)。

第二次请求代码:

getOriginalData(URL:任何){

  const proxyRequest=this._getRequest(url)

  return proxyRequest
  .expand(response => {
      if (response.uuid==null) {
        this._getRequest(url);
      } else {
        Rx.Observable.empty();
      }
    return Observable.of(response);
  });

private _getRequest(url:any){
  return this._http.get(url)
}

我一直在遵循此实施以实现我的目标:Angular - Correctly using RXJS expand operator to make recursive http calls

使用此实现会导致

ERROR RangeError: Maximum call stack size exceeded

但由于某种原因,它没有按预期工作。如何以标准方式进行递归调用,使其不会泛滥网络。

1 个答案:

答案 0 :(得分:1)

从未使用过扩展运算符,但根据我的理解,您需要返回一个Observable.empty来停止递归请求