gpt4 book ai didi

javascript - 拆分 RxJS 可观察输出

转载 作者:行者123 更新时间:2023-11-29 21:23:25 24 4
gpt4 key购买 nike

我正在构建一个事件的可观察对象,它输出确认记录的文本行,这些记录被两个空行分开。例如:

xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx


xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx


xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx

我希望 observable 将输出分成两行,以便订阅者以 block 的形式获取数据。

我如何使用 RxJS 完成此操作?它似乎没有执行此工作的功能。

我可以订阅观察者,积累值(value)并重新发射自己,但我相信有一个我没有看到的更优雅的解决方案。

最佳答案

buffersample 以及scan 的组合也可以。基本上,您在缓冲区中累积输入(即行)。每次 observable 发出值时,您都会释放此缓冲区,使用 sample。然后你让 observable 每次检测到两个连续的 \n 时都会发出一个值。这可以通过 scan 实现。请注意,这需要您的 source$ 是一个热可观察对象。

因此,您可以完成以下代码,如果最终成功,请及时通知我们:

var detect_two_lines = function (acc, new_line)){
// if new_line and last line of acc are both \n
// then acc.arr_lines = [], acc.found = true
// else acc.arr_lines.push(new_line), acc.found = false
}
var identity = function(x){return x}
var sample$ = source$.scan(detect_two_lines, {arr_lines:[], found:false})
.pluck('found')
.filter(identity);
var results$ = source$.buffer(sample$);

关于javascript - 拆分 RxJS 可观察输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38083813/

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