【问题标题】:Recursive HTTP Calls - Piping Parsed Data from Callback递归 HTTP 调用 - 从回调管道解析数据
【发布时间】:2019-03-28 07:49:33
【问题描述】:

我想进行递归 HTTP 调用。我知道我可以进行初始调用,然后使用 pipeexpand 重复 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));

【问题讨论】:

标签: javascript rxjs


【解决方案1】:

你应该在expand它之前进行解析。

例如

const fetchPageParsed = () => {
  return fetchPage().pipe(
    map(response => parse(response))
  );
};

fetchPageParsed().pipe(
  expand(parsed => {
    if (parsed.last) {
      return EMPTY;
    }

    return fetchPageParsed(parsed.nextPage);
  })
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2015-01-07
    • 2018-04-22
    • 2012-08-29
    相关资源
    最近更新 更多