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