我正在尝试获取连接到我的应用程序的打印机状态。这是我在页面之一中提供的功能:
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值。我该如何实现?任何帮助或指示,我们将不胜感激。
答案 0 :(得分:0)
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()
)
))
);
}
此函数返回一个可观察的
答案 1 :(得分:0)
您可以像这样从函数[
返回一个可观察对象-
checkPrinterStatus
由于该函数返回一个可观察值,因此调用方可以通过该方法订阅可观察的返回值。