1

我正在尝试使用 cycle-http 驱动程序发送多个 HTTP 请求。我的示例中的第一个请求获取了一个邮箱列表,并且在该响应中是多个邮箱,我必须为后续线程发送 HTTP 请求。

获取所有邮箱 ID HTTP 请求 -> 从每个邮箱 HTTP 请求中获取所有邮件。

在这一点上我很困惑,我看到的所有示例都是简单的单个请求,其中 url 在生成 observable 之前是已知的。filter因此,我不仅对嵌套 HTTP 请求感到困惑,而且由于 URL 是动态生成的,因此我也不确定如何在发出请求后“知道”a的 URL。

任何帮助将不胜感激。

4

1 回答 1

3

我们可以假设我们已经有一个流来表示 HTTP 请求的第一个“级别”的结果。我们可以简单地映射这些结果并将它们转换为新的 HTTP 请求:

// this should be sent to HTTP driver
let mailboxDetailsRequests$ = mailboxes$.map(mailboxes => {
  // map all mailboxes to requests sequence
  return Observable.fromArray(mailboxes.map(mailbox => ({
    url: 'get/mailbox/url/' + mailbox.name,
    mailbox: mailbox.name
  }))
}).flatMap(_ => _)

现在我们可以通过过滤mailbox请求的属性来访问这些 HTTP 响应(或者您可以使用某种区分这些请求与其他类型请求的区别功能):

// and now you can get the responses by filtering the HTTP source
let mailboxResult$ = HTTP.filter(r$$ => r$$.request.mailbox).switch();
于 2016-03-10T15:22:21.463 回答