[英]RxJs : How to close subscription of nested observable.subscribe call
在我的 Angular 應用程序中:
我有這樣的治療:
mySubjectOne = new Subject();
methodOne(){
this.subscriptionOne = mySubjectOne.subscribe((response) => {
this.methodTwo();
})
}
methodTwo(){
this.subscriptionTwo = return this.httpClient.post(myurl , mydata).subscribe((response) => {
myTreatment(); // MY TREATMENT
})
}
我的問題是每當“ mySubjectOne ”被稱為methodOne調用methodTwo 時,
並且 subscriptionTwo 似乎每次都被克隆為 +1 :
比如第三次調用:methodOne,好像調用了4個subscriptionTwo
我如何在 TREATMENT 之后關閉 subsrciption subscriptionTwo 並讓它在每個 rime 中重新創建
建議?
您可以使用switchMap來實現這種行為。 請注意,還有其他運算符,例如exhaustMap
或mergeMap
,它們可能更適合您想要的行為。 閱讀提供的來源。
mySubjectOne = new Subject();
methodOne() {
this.subscriptionOne = mySubjectOne.pipe(
switchMap((response) => this.methodTwo()),
)
.subscribe((response) => {
myTreatment();
});
}
methodTwo() {
this.subscriptionTwo = return this.httpClient.post(myurl , mydata);
}
現在每當mySubjectOne
觸發時, methodTwo
將被執行。 完成后, myTreatment
將運行。
請注意,您應該只運行一次methodOne
(以初始化訂閱),否則訂閱可能會運行多次。 所以我建議將初始化過程移到你的構造函數或者ngOnInit
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.