gpt4 book ai didi

angular - takeLast 似乎杀死了可观察的流

转载 作者:太空狗 更新时间:2023-10-29 17:33:04 28 4
gpt4 key购买 nike

我正在尝试设置一个可观察流,将最近的设置值与最后一个设置值进行比较,我想根据两者之间的一些变化进行过滤。我在服务中设置了一个 BehaviorSubject(Angular 2,如果重要的话)并创建了返回它的函数:

getFilters() {
return this.filtersSubject.asObservable();
}

然后在使用它的组件中,我尝试这样做:

this.eventFilterService.getFilters()
.takeLast(2)
.subscribe((data) => console.log(data));

但是我没有得到控制台日志。如果我删除 takeLast,我会看到我的数据返回。根据文档,我的假设是原样,它只会触发两次。我的目标是将 takeLast 送入 reduce,然后送入过滤器。

我是不是用错了 takeLast?

最佳答案

takeLast(x) 将等待 Observable 完成,然后才能发出最后的 x 发射。由于您使用主题,因此您需要调用 complete() 才能使其正常工作。

但您确实想要计算两次发射之间的差异。为此,请使用 .buffer() 运算符

Rx.Observable.from([2,3,5,8])
.bufferCount(2,1)
.map(buff => buff[1] - buff[0])
.subscribe(delta => console.log(delta))

关于angular - takeLast 似乎杀死了可观察的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42105489/

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