在 Subject.next 调用之后返回一个 Observable



我正在做一个 Ionic 2 项目,有两个重要功能可以注销用户并远程清除数据库。这是我正在处理的代码

private logoutEvent: Subject<any> = new Subject();
private clearDbEvent: Subject<any> = new Subject();

this.logoutEvent.take(1).subscribe(() => {
// do something before logout
// has a loader and dismiss the loader after 3 seconds in this block
});
this.clearDbEvent.take(1)
.skipUntil(this.logoutEvent.take(1))
.concat(this.resetDb())
.subscibe()
private resetDb() {
return Observable.forkJoin(
Observable.fromPromise(this.getLocaldb.destroy()),
Observable.fromPromise(this.getStarogeDb.destroy())
);
}

用户可以注销调用logoutEvent.next(( 调用(我正在使用 pouchdb 同步功能来执行此操作(,它工作正常。我想做的是,在clearDbEvent调用之前,需要调用logoutEvent事件。我正在使用 Rxjs 来做到这一点。

完成注销事件后调用 clearDbEvent 的最佳方法是什么?

也许函数开关图可以帮助你?

在这里你可以看到一个教程: https://www.youtube.com/watch?v=6lKoLwGlglE&t=18s

如果你真的需要在logoutEvent完成后触发clearDbEvent,你需要在subscribe中将其添加到complete处理程序中。

this.logoutEvent.take(1).subscribe(() => {
...
}, undefined, () => this.clearDbEvent.next());

最终,您可以使用将在logoutEvent完成并取消订阅后调用的finally运算符。

this.logoutEvent
.take(1)
.finally(() => this.clearDbEvent.next())
.subscribe(() => {
...
}

最新更新