我为角音频创建了一个功能:
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);
};
});
}
当我需要使用该功能时,会显示错误消息:
功能使用:
playStream(url) {
return this.streamObservable(url).pipe(takeUntil(this.stop$));
}
并显示此错误:
类型'void'上不存在属性'pipe'。
是什么问题?我该如何解决?
答案 0 :(得分:3)
您需要从调用的函数中返回可观察对象。
就像-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);
};
});
}
答案 1 :(得分:0)
对我来说,解决方案是一个非常简单的错误,在我的情况下,我返回了一个 observable,但我没有正确调用该方法。我错过了方法调用中的 ()
。
原始代码
this.service.method.pipe().subscribe();
固定代码
this.service.method().pipe().subscribe();