Cycle.js 嵌套 HTTP 请求
Cycle.js Nested HTTP Requests
我正在尝试使用 cycle-http 驱动程序发送多个 HTTP 请求。我的示例中的第一个请求获取了一个邮箱列表,并且在该响应中有多个邮箱,我必须为后续线程发送 HTTP 请求。
获取所有邮箱 ID HTTP 请求 -> 从每个邮箱 HTTP 请求中获取所有邮件。
此时我很困惑,我看到的所有示例都是简单的单个请求,其中 url 在生成可观察对象之前已知。因此,我不仅对嵌套 HTTP 请求感到困惑,而且我也不确定如何在 URL 之后发出请求后 "know" 为 filter
s是动态生成的。
如有任何帮助,我们将不胜感激。
我们可以假设我们已经有一个表示第一个 "level" 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();
我正在尝试使用 cycle-http 驱动程序发送多个 HTTP 请求。我的示例中的第一个请求获取了一个邮箱列表,并且在该响应中有多个邮箱,我必须为后续线程发送 HTTP 请求。
获取所有邮箱 ID HTTP 请求 -> 从每个邮箱 HTTP 请求中获取所有邮件。
此时我很困惑,我看到的所有示例都是简单的单个请求,其中 url 在生成可观察对象之前已知。因此,我不仅对嵌套 HTTP 请求感到困惑,而且我也不确定如何在 URL 之后发出请求后 "know" 为 filter
s是动态生成的。
如有任何帮助,我们将不胜感激。
我们可以假设我们已经有一个表示第一个 "level" 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();