作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 RxJs 可观察对象的新手,一旦满足条件,我发现很难取消订阅循环,请你帮我
在下面的函数中,如果代码到达 if block 我想取消订阅 Observables
在问这个问题之前,我已经经历了以下问题,但没有一个对我有太大帮助
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);
}
});
最佳答案
你可能想要 takeWhile
:
this.router.events
.pipe(
takeWhile(url => url === ...), // when the condition isn't met it'll complete immediately
)
.subscribe(...);
this.router.events
.pipe(
concatMap(url => url === ... ? of(url, null) : of(url)),
takeWhile(Boolean),
)
.subscribe(...);
takeWhile
添加了重载,现在可以像这样包含最后一个值:
this.router.events
.pipe(
takeWhile(url => url === ..., true),
)
.subscribe(...);
关于javascript - 如何在 RxJs 中满足条件后立即取消订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51196776/
我是一名优秀的程序员,十分优秀!