コンテンツにスキップ

takeUntil

通知用 Observable が発行するまで、ソースからの値を発行します。 通知用 Observable が発行すると、この Observable は完了します。

Timeline of observable events123Timeline of observable events·
takeUntil(stop$)
Timeline of observable events12
// Timeline:
//
// num$ 1 2 stop 3 (ignored)
// stopNotifier X
// limited$ 1 2 |------- (completed)
//
// Explanation:
// - takeUntil completes the observable when the notifier emits
// - After stop() is called, no further values are emitted
// - Useful for cleanup and cancellation patterns
const num$ = source<number>();
const [stopNotifier, stop_] = createEventEmitter();
const limited$ = num$.pipe(takeUntil(stopNotifier));
const valueHistory: number[] = [];
limited$.subscribe((x) => {
valueHistory.push(x);
});
num$.next(1); // logs: 1
assert.deepStrictEqual(valueHistory, [1]);
num$.next(2); // logs: 2
assert.deepStrictEqual(valueHistory, [1, 2]);
stop_();
num$.next(3); // nothing logged (completed)
assert.deepStrictEqual(valueHistory, [1, 2]);

View source on GitHub