Ron*_*Ron 2 javascript observable rxjs angular
我是RxJ观察站的新手,一旦满足条件,我将难以取消订阅循环,请您帮我一下
在下面的函数中,如果代码到达if块,我想退订Observables
在问这个问题之前,我先经历了以下问题,但没有一个对我有太大帮助
Javascript功能
this.router.events.subscribe((url: any) => {
url = this.router.url;
if ((url === "/profile" || url === "/summary") && this.filterConfigFlag === false) {
/*
Perform operations
*/
} else {
console.log(typeof (url), url);
}
});
Run Code Online (Sandbox Code Playgroud)
您可能想要takeWhile:
this.router.events
.pipe(
takeWhile(url => url === ...), // when the condition isn't met it'll complete immediately
)
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
但如果您还想包含最后一个值(完成Observable的值),则需要执行以下操作:
this.router.events
.pipe(
concatMap(url => url === ... ? of(url, null) : of(url)),
takeWhile(Boolean),
)
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
RxJS 6.4向中添加了一个重载takeWhile,现在可以包含最后一个值,如下所示:
this.router.events
.pipe(
takeWhile(url => url === ..., true),
)
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1974 次 |
| 最近记录: |