我尝试使用cycle-http驱动程序发送多个HTTP请求。我的示例中的第一个请求获取了一个邮箱列表,并且该响应中包含多个邮箱,我必须为后续线程发送HTTP请求。
获取所有邮箱ID HTTP请求 - >从每个邮箱HTTP请求中获取所有邮件。
我在这一点上很难过,我看到的所有例子都是简单的单一请求,其中在生成observable之前知道url。因此,我不仅对嵌套HTTP请求感到困惑,而且我也不确定如何"知道"自动态生成URL以来,请求完成后filter
的URL。
非常感谢任何帮助。
答案 0 :(得分: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();