如何取消"由操作员制作的可观察物

时间:2017-04-09 17:37:53

标签: angular webrtc rxjs

一般而言,我有一个父母"产生价值的可观察物,然后我有任意数量的儿童"根据来自"父母"的最后给定值生成自己的值流的可观察量。我需要这些儿童可观察到的可以取消"以这种方式,他们停止产生价值,而他们的兄弟姐妹欢快地前进。通过对子观察的操作创建的任何可观察量应该被取消"同样。取消应该包括释放儿童可观察的(以及它的孩子)所使用的记忆。

更具体地说,我正在使用Web Audio API。父观察产生AnalyserNode s。通过在switchMap()可观察对象上调用AnalyserNode来创建子可观察对象。 switchMap返回的可观察对象是一个新的Observable.interval,它会从AnalyserNode生成fft帧。

我们的想法是能够任意创建和销毁由同一FftFrame

提供的AnalyserNode个流
let fftSpec = {interval: 100};
let fftFrame$ = analyserNode$.switchMap((analyser: AnalyserNode) => {
  let fftFrame = new Uint8Array(analyser.frequencyBinCount);
  return Observable
    .interval(fftSpec.interval)
    .map(() => {
      analyser.getByteFrequencyData(fftFrame);
      let copy = new UintArray(analyser.frequencyBinCount);
      copy.set(fftFrame);
      return copy;
    });
});

0 个答案:

没有答案