【发布时间】:2017-05-29 18:07:49
【问题描述】:
我在 Angular 2 组件中使用 Behavior Subject 并且我希望在最后一个之前发出第二个值,RxJs document 说我应该在我的流上使用 skipLast 方法来忽略它们,但是我在使用它时遇到错误说:
“可观察”类型上不存在属性“skipLast”
角度版本:2.3.1 Rx.js 版本:5.0.3
这是我的代码:
import 'rxjs'
import { BehaviorSubject } from 'rxjs/BehaviorSubject'
@Component({
...
})
export class FilesComponent {
folderId: BehaviorSubject<number> = new BehaviorSubject(0)
constructor() {
this.folderId.skipLast(2).subscribe(
value => { console.log(value) }
)
}
clickHandler(fileId: number): void {
this.folderId.next(fileId)
}
}
【问题讨论】:
-
你从哪里得知应该有一个
skipLast运算符? -
@GünterZöchbauer 正如我已经说过的,我是从 rx 文档中读到的。尽管 Rx 5 中不再提供此功能,您能否建议一种方法来实现此功能?
-
抱歉,不知道。我觉得这很奇怪,它完全被支持。在可观察对象完成之前,您如何知道事件是倒数第三个事件。我认为这意味着在新的事件到来之前保留 2 个事件,因此在 observable 完成之前,您将始终有 2 个未完成的事件。那有什么用例?
-
我正在编写一个文件管理器,每个目录都有一个 id,所以导航应该使用该 id 来实现,以防更深入目录没有问题,但是当实现后退按钮时,这成为问题(我需要祖父 id 在树中向上导航一级)我认为一个好的解决方案是使用数组并缓存用户导航的目录 id,然后单击返回删除最后两个 id 并获取具有数组中最后一项的 id 的文件但我认为我可以使用流来实现它会非常好。
-
我明白了,但不知道。