У меня есть сценарий, в котором первоначальный запрос отправит путь URL-адреса, а последующий запрос должен использовать этот путь в качестве URL-адреса, который будет удален с использованием запроса на получение из службы. (Эта часть выполнена)
Теперь начинается реальная проблема. Проблема здесь в том, что второй запрос не будет выдавать выходные данные напрямую, а будет отправлять статус как QUEUE до тех пор, пока ответ полностью обработан. Все, что мне нужно сделать, это подождать/нажать на URL еще раз, пока состояние QUEUE не изменится на состояние OK (фактический ответ приходит сюда).
Код для 2-го запроса:
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)
}
Я следовал этой реализации для достижения своей цели: https://stackoverflow.com/questions/44981974/angular-correctly-using-rxjs-expand-operator-to-make-recursive-http-calls .
Использование этой реализации приводит к
ERROR RangeError: Maximum call stack size exceeded
Но по какой-то причине он не работает, как ожидалось. Как я могу сделать рекурсивный вызов стандартным способом, чтобы он не затоплял сеть.