gpt4 book ai didi

javascript - javascript 中 rxjs5 组合的示例

转载 作者:行者123 更新时间:2023-12-03 05:18:04 24 4
gpt4 key购买 nike

大家好,我想询问有关 rxjs 的组合运算符...

我有一系列网站:

const sites = [
{ name:'siteOne', url: 'http://www.example.com' },
{ name:'siteTwo', url: 'http://www.google.com' },
{ name:'siteThree', url: 'http://www.google.com' }
]

所以,我不想每次都发出请求,但我需要为每个站点网址发出一个请求,而不是创建新的流,与站点结合起来,如下所示:

[ html, siteTwo, siteThree]
[ html, siteOne ]

有什么办法可以做到这一点吗?谢谢

最佳答案

如果您只想为每个唯一的网址获取一次数据,您可以执行以下操作:

Rx.Observable.from(sites)
.groupBy(s => s.url)
.flatMap(grp => grp.toArray())
.flatMap(
uniqueUrlGrouping => fetchHtml(uniqueUrlGrouping[0].url),
(uniqueUrlGrouping, html) => ({
url: uniqueUrlGrouping[0].url,
sites: uniqueUrlGrouping.map(s => s.name),
html:html
})
)
.subscribe(val => console.log(val));

注意;为了让 toArray() 工作,您的输入流需要完成,否则它不知道何时可以将完成的分组发射转换为数组。

请注意,.groupBy() 会将所有唯一的 url 保留在内存中,直到您的输入流完成,因此如果您的输入流不受限制,它可能会增加到大量内存使用量。

关于javascript - javascript 中 rxjs5 组合的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41525803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com