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”。
有什么问题???我该如何解决这个问题???
您需要从被调用函数返回可观察值。
喜欢 -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)