我想使用运算符完成一个不能自然完成的内部流takeUntil
,如下所示:
outerObservable
.mergeMap(() => {
innerObservable
.takeUntil(stopObservable$)
});
这可行,内部流按预期完成,但我希望外部流在停止信号之后返回最后一个值。即使经过大量的谷歌搜索,我仍然不知道如何。
编辑:
我写了一个似乎可以解决问题的运算符,但是因为我知道有更好的方法或我完全误解的东西,所以让问题悬而未决。
function takeUntilThen(notifier, oneLastValue) {
return Rx.Observable.create(subscriber => {
var source = this;
notifier.subscribe(() => {
subscriber.next(oneLastValue);
subscriber.complete()
});
return source.subscribe(value => {
subscriber.next(value);
},
err => subscriber.error(err),
() => subscriber.complete());
});
}