【发布时间】:2018-08-31 14:35:09
【问题描述】:
我想构建一个包装类,它在 Observable 的每个发射值之前和之后执行一些操作。
这是我想出的:
class Wrapper<T> {
wrapped$: Observable<T>;
_dataSubject = new Subject<T>();
data$ = this._dataSubject.pipe(
tap(_ => console.log("BEFORE"),
//
// map( ??? )
//
);
constructor(wrapped$: Observable<T>) {
this.wrapped$ = wrapped$.pipe(
tap(_ => console.log("AFTER")
);
}
}
let subject = new Subject<string>();
let wrapper = new Wrapper(subject);
wrapper.data$.subscribe(val => console.log(val));
subject.next("foo")
控制台输出应该是:
BEFORE
foo
AFTER
我不知道如何将$wrapped Observable 与_dataSubject 连接起来。
但也许我完全错了,它需要一种不同的方法。
【问题讨论】:
-
您的代码有些奇怪,因为您声明了两个主题。您永远不会将 _dataSubject 中创建的那个与您当前的实现一起使用。因此,当您调用下一个主题时,什么都不会发生。你想实现什么用例?
-
我知道我的代码根本不起作用,否则我不会在这里问问题:D 我只是想展示我想如何使用
Wrapper类。虽然唯一真正重要的行是最后 4 行(let subject = ...到subject.next("foo");)
标签: typescript rxjs observable rxjs5 subject-observer