Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Angular 2/4中使用http.get()进行递归调用_Angular_Angular2 Services_Angular4 Httpclient - Fatal编程技术网

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

在Angular 2/4中使用http.get()进行递归调用,angular,angular2-services,angular4-httpclient,Angular,Angular2 Services,Angular4 Httpclient,我有一个场景,在这个场景中,初始请求将发送一个url路径,随后的请求应该使用该路径作为要使用get request from service命中的url。这部分完成了 现在实际问题开始了,这里的问题是第二个请求不会直接给出输出,而是将状态作为队列发送,直到响应被完全处理。我所要做的就是再次等待/点击url,直到队列状态变为OK状态,实际响应出现在这里 第二次请求的代码: getOriginalDataurl:任何{ const proxyRequest=this._getRequest(ur

我有一个场景,在这个场景中,初始请求将发送一个url路径,随后的请求应该使用该路径作为要使用get request from service命中的url。这部分完成了

现在实际问题开始了,这里的问题是第二个请求不会直接给出输出,而是将状态作为队列发送,直到响应被完全处理。我所要做的就是再次等待/点击url,直到队列状态变为OK状态,实际响应出现在这里

第二次请求的代码:

getOriginalDataurl:任何{

  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)
}
我一直遵循此实现来实现我的目标:

使用此实现会导致

ERROR RangeError: Maximum call stack size exceeded

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

从未使用扩展运算符,但据我所知,您需要返回一个Observable.empty以停止递归请求

,但请求由于堆栈错误而失败,尽管您没有重试已关闭observable.empty,因此扩展未停止。我已将其更改为getOriginalDataurl:any{const proxyRequest=this.\u getRequesturl return proxyRequest.expandresponse=>{if response.uuid==null{返回this.\u getRequesturl;}否则{return Rx.obbservable.empty;}};但是它会一直运行,不会得到最终的输出,所以请尝试调试以查看返回的响应。可能response.uuid始终为null,函数将继续调用http请求