属性“pipe”在“void”类型上不存在 Angular 9

kia*_*taj 1 javascript rxjs typescript angular

我为 Angular 中的流音频创建了一个函数:

 private streamObservable(url) {
    new Observable(observer => {
      // Play audio
      this.audioObj.src = url;
      this.audioObj.load();
      this.audioObj.play();

      const handler = (event: Event) => {
        observer.next(event);
      };

      this.addEvents(this.audioObj, this.audioEvents, handler);
      return () => {
        // Stop Playing
        this.audioObj.pause();
        this.audioObj.currentTime = 0;
        // remove event listeners
        this.removeEvents(this.audioObj, this.audioEvents, handler);
      };
    });
  }
Run Code Online (Sandbox Code Playgroud)

当我需要使用该功能时,它会显示错误:

功能使用:

 playStream(url) {
    return this.streamObservable(url).pipe(takeUntil(this.stop$));
}
Run Code Online (Sandbox Code Playgroud)

并显示此错误:

类型“void”上不存在属性“pipe”。

有什么问题???我该如何解决这个问题???

Jas*_*ngh 5

您需要从被调用函数返回可观察值。

喜欢 -return new Observable (observer => {

 private streamObservable(url) {
    return new Observable(observer => {
      // Play audio
      this.audioObj.src = url;
      this.audioObj.load();
      this.audioObj.play();

      const handler = (event: Event) => {
        observer.next(event);
      };

      this.addEvents(this.audioObj, this.audioEvents, handler);
      return () => {
        // Stop Playing
        this.audioObj.pause();
        this.audioObj.currentTime = 0;
        // remove event listeners
        this.removeEvents(this.audioObj, this.audioEvents, handler);
      };
    });
  }
Run Code Online (Sandbox Code Playgroud)