forkJoin 上的 takeUntil 是否调用 forkJoined observables 上的函数?

Tom*_*ski 4 rxjs angular

调用 a 时forkJoin

forkJoin(observableA, observableB)
  .pipe(takeUntil(onDestroy$))
Run Code Online (Sandbox Code Playgroud)

.pipe(takeUntil(onDestroy$))加入时角组件被破坏,释放可观。这是否也被 observableA 和 obserableB 调用?还是应该在传递给的所有 observable 上单独调用它forkJoin

JB *_*zet 6

它将自动取消订阅源 observables。

一个简单的测试来确认。

import { of, interval, forkJoin } from 'rxjs'; 
import { map, takeUntil, delay, tap } from 'rxjs/operators';

const source1 = interval(200).pipe(tap(i => console.log(i)));
const source2 = interval(300).pipe(tap(i => console.log('a' + i)));

const stop = of('stop').pipe(delay(2000));

forkJoin(source1, source2).pipe(takeUntil(stop)).subscribe();
Run Code Online (Sandbox Code Playgroud)

在 2 秒内记录值然后停止。