【发布时间】:2016-07-29 08:18:23
【问题描述】:
RxJS 5Angular 2 RC4Typescript 1.9写的应用:
我有两个可观察的链。我想,如果第二个条件满足,第一个立即完成。我的努力似乎不必要地复杂。在下面的示例中,我尝试在第一个 observable 发出 3 个值后停止它:
source = Observable.interval(1000)
.do(()=>this.print("*******EMITTING from Source*******"))
.switchMap(count => {
if(count<3){ //just pass along the value
return Observable.create(observer=>{
observer.next(count);observer.complete()
})
}
else{ //abort by issuing a non-productive observable
return Observable.create(observer=>
observer.complete()
)
}
})
this.source.subscribe(count=>this.print('Ouput is '+count);
这是输出:
*******EMITTING from Source*******
Output is 0
*******EMITTING from Source*******
Output is 1
*******EMITTING from Source*******
Output is 2
*******EMITTING from Source*******
*******EMITTING from Source*******
*******EMITTING from Source*******
所以,在功能上我得到了我想要的结果,因为更广泛的脚本在三个输出后停止接收通知。但是,我确信有更好的方法。我的问题是:
- 上游的 observable 会一直持续发射。我怎样才能阻止它?
- 我正在创建一个新的 observable 在每次发射的链条上。我不应该只传递前 3 个值,但在第 4 天中止或完成链吗?
【问题讨论】:
标签: rxjs observable