Javascript 递归HTTP调用-通过管道从回调解析数据

Javascript 递归HTTP调用-通过管道从回调解析数据,javascript,rxjs,Javascript,Rxjs,我想进行递归HTTP调用。我知道我可以进行初始调用,然后使用pipe和expand重复HTTP调用 但是,如下面的伪代码所示,回调返回已解析的响应,因此流是异步的。在这个场景中,我如何管道解析的响应 const fetchPage = (request) => { return ajax(request).pipe(map(response => { if (response.status == 200) { // The callback ret

我想进行递归HTTP调用。我知道我可以进行初始调用,然后使用
pipe
expand
重复HTTP调用

但是,如下面的伪代码所示,回调返回已解析的响应,因此流是异步的。在这个场景中,我如何
管道
解析的响应

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));

您应该在进行分析之前进行分析

例如

const fetchPageParsed=()=>{
返回fetchPage().pipe(
映射(响应=>解析(响应))
);
};
fetchPageParsed().pipe(
展开(已解析=>{
if(已解析的最后一个){
返回空;
}
返回fetchPageParsed(parsed.nextPage);
})
)

您应该在解析之前进行解析

例如

const fetchPageParsed=()=>{
返回fetchPage().pipe(
映射(响应=>解析(响应))
);
};
fetchPageParsed().pipe(
展开(已解析=>{
if(已解析的最后一个){
返回空;
}
返回fetchPageParsed(parsed.nextPage);
})
)