如何解决从包含订阅和另一个可观察变量的函数中返回可观察变量
我正在尝试获取连接到我的应用程序的打印机状态。这是我在页面之一中提供的功能:
checkPrinterStatus() { //I want to this this function into an observable
this.afdb.object('food/settings/printer').snapshotChanges().subscribe((res: any) => {
const printerSettings = res.payload.val();
if(printerSettings.isConnected) {
timer(5000,3000).pipe(
switchMap(_ => this.getConnPrinterStatus()),distinctUntilChanged()
).subscribe(async res => {
let printerStatus = res;
return printerStatus; // I want this to be an observable
});
}
});
}
因此,基本上,我正在订购我的Firebase数据库,该数据库为我提供了有关打印机是否已连接/设置的价值。如果已连接,我将创建一个轮询,在其中调用我的getConnPrinterStatus(),如果更改了状态,则每三秒钟会向我返回一次状态。
现在,当前,我在页面之一中具有此功能,但是我想将此功能变为可观察的,以便可以将其放在服务之一中,然后在每页中订阅printerStatus值。我该如何实现?任何帮助或指示,我们将不胜感激。
解决方法
checkPrinterStatus() { //I want to this this function into an observable
return this.afdb.object('food/settings/printer').snapshotChanges().pipe(
switchMap(res => iif(() => res.payload.val().isConnected,timer(5000,3000).pipe(
switchMap(_ => this.getConnPrinterStatus()),distinctUntilChanged()
)
))
);
}
此函数返回一个可观察的
,您可以像这样从函数[
返回一个可观察对象-
checkPrinterStatus
由于该函数返回一个可观察值,因此调用方可以通过该方法订阅可观察的返回值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。