【发布时间】:2018-02-12 04:14:29
【问题描述】:
我很难理解为什么这段代码会删除第一个元素?
const Rx = require("@reactivex/rxjs")
const requestQueue = Rx.Observable.from([
{type: "show.json", value: "1"},
{type: "tweets.json", value: "A"},
{type: "show.json", value: "2"},
{type: "tweets.json", value: "B"}
])
requestQueue.groupBy(request => request.type).bufferCount(2).mergeMap(requestSubstreams => {
return requestSubstreams[0].merge(requestSubstreams[1])
}).subscribe(x => console.log(x))
我得到的输出是:
{ type: 'tweets.json', value: 'A' }
{ type: 'show.json', value: '2' }
{ type: 'tweets.json', value: 'B' }
做了一些实验,它总是第一个被丢弃的元素。
我必须求助于这段代码(使用分区)才能得到我期望的结果:
const requestQueue = Rx.Observable.from([
{type: "show.json", value: "1"},
{type: "tweets.json", value: "A"},
{type: "show.json", value: "2"},
{type: "tweets.json", value: "B"}
])
const requestSubstreams = requestQueue.partition(request => request.type == "show.json")
const showJsonSubstream = requestSubstreams[0]
const tweetsJsonSubstream = requestSubstreams[1]
showJsonSubstream.merge(tweetsJsonSubstream).subscribe(x => console.log(x))
您能否帮助指出 groupBy 的问题/警告?
【问题讨论】:
-
在 StackOverflow 中找到相关帖子:stackoverflow.com/questions/38043728/…
-
为什么
groupBy和merge之间有一个bufferCount运算符?您希望这会产生什么行为? -
对,我注意到 bufferCount 似乎是这里的罪魁祸首(不知道如何/为什么)。但是我需要它,因为我需要获取所有分组(我想在该 mergeMap 中以某种方式连接/组合第 1 组的可观察对象和第 2 组的可观察对象)。有什么选择吗?
-
不清楚为什么您使用
groupBy或partition将值分开type只是为了稍后将它们重新组合到同一个流中。也许你应该解释你想要达到的目标是什么。如果可能,请使用大理石图。
标签: reactive-programming rxjs5