MCPcopy
hub / github.com/angular/angular / pendingUntilEvent

Function pendingUntilEvent

packages/core/rxjs-interop/src/pending_until_event.ts:21–64  ·  view source on GitHub ↗
(injector?: Injector)

Source from the content-addressed store, hash-verified

19 * @developerPreview 20.0
20 */
21export function pendingUntilEvent<T>(injector?: Injector): MonoTypeOperatorFunction<T> {
22 if (injector === undefined) {
23 ngDevMode && assertInInjectionContext(pendingUntilEvent);
24 injector = inject(Injector);
25 }
26 const taskService = injector.get(PendingTasks);
27
28 return (sourceObservable) => {
29 return new Observable<T>((originalSubscriber) => {
30 // create a new task on subscription
31 const removeTask = taskService.add();
32
33 let cleanedUp = false;
34 function cleanupTask() {
35 if (cleanedUp) {
36 return;
37 }
38
39 removeTask();
40 cleanedUp = true;
41 }
42
43 const innerSubscription = sourceObservable.subscribe({
44 next: (v) => {
45 originalSubscriber.next(v);
46 cleanupTask();
47 },
48 complete: () => {
49 originalSubscriber.complete();
50 cleanupTask();
51 },
52 error: (e) => {
53 originalSubscriber.error(e);
54 cleanupTask();
55 },
56 });
57 innerSubscription.add(() => {
58 originalSubscriber.unsubscribe();
59 cleanupTask();
60 });
61 return innerSubscription;
62 });
63 };
64}

Callers 1

Calls 10

assertInInjectionContextFunction · 0.90
injectFunction · 0.90
cleanupTaskFunction · 0.85
getMethod · 0.65
addMethod · 0.65
subscribeMethod · 0.65
errorMethod · 0.65
unsubscribeMethod · 0.65
nextMethod · 0.45
completeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…