我正在做一个 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(() => {
...
}