Я бы хотел сделать рекурсивные вызовы HTTP.Я понимаю, что могу сделать первоначальный вызов, а затем использовать pipe
и expand
, чтобы повторить вызов HTTP.
Однако, как показано в псевдокоде ниже, обратный вызов возвращает проанализированный ответ, поэтому поток является асинхронным.В этом случае, как мне pipe
проанализированный ответ?
const fetchPage = (request) => {
return ajax(request).pipe(map(response => {
if (response.status == 200) {
// The callback returns the parsed response, how can/should I wait for the callback to return?
parser.parse(response.responseText, callback);
} else {
return EMPTY;
}
}));
}
fetchPage(request).pipe(
expand(parsedResponse => {
if (checkLast(parsedResponse)) {
return EMPTY;
} else {
return fetchPage(parsedResponse.next);
};
}),
concatMap(parsedResponse => parsedResponse));