Я хочу, чтобы заполнить внутренний поток, который, естественно, не полный, с помощью оператора takeUntil
, как это:Использование takeUntil для завершения потока RxJS
outerObservable
.mergeMap(() => {
innerObservable
.takeUntil(stopObservable$)
});
Это работает, внутренний поток завершает, как и ожидалось, но Я хотел бы, чтобы внешний поток возвращал одно последнее значение после сигнала останова. Даже после многих поисковых запросов я до сих пор не знаю, как это сделать.
EDIT:
Я написал оператор, который, кажется, сделать трюк, но оставив открытым вопрос, потому что я знаю, что есть лучший путь или что-то я полностью недоразумение.
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());
});
}
осторожен, ваш оператор пропускает его подписка подписчика! – jayphelps
спасибо, я посмотрю, что, когда я выясню, что это значит :-) – mysomic