我們正在使用 RxJs 7.4,我想知道是否有使用新.subscribe()語法的終結器?
我經常會有這樣的代碼:
this.service
.someMethod()
.subscribe({
next: () => {
nextThings();
this.someBool = false;
},
error: err => {
errorThings();
this.someBool = false;
}
});
是否有與這種新next/error語法等效的終結器,所以我只需someBool在一個地方設定?
uj5u.com熱心網友回復:
是的,看看可管道化的運營商。finalize就是你要找的。
樣本:
this.service
.someMethod()
.pipe(
finalize(() => this.someBool = false))
.subscribe({
next: () => {
nextThings();
//not need this.someBool = false;
},
error: err => {
errorThings();
//not need this.someBool = false;
}
});```
uj5u.com熱心網友回復:
如果我理解你的問題,我會開始說這next是“終結器”的一部分,只有當this.service.someMethod()回傳一個 Observable 時,它只通知一次然后completes。
映射 http 呼叫的 Observables 就是這種情況,但一般而言并非如此。
無論如何,正如其他回應中已經指出的那樣,finalize如果您想在 Observable 為errors 或completes時執行一個函式,則可以使用該運算子。
否則你可以使用completeObserver的屬性在 Observable 完成時運行一些邏輯,像這樣
this.service
.someMethod()
.subscribe({
next: () => {
nextThings();
},
error: err => {
errorThings();
},
complete: () => {
// completeThings()
}
});
這并沒有解決邏輯的重復,但在“終結器”方面更準確。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/407777.html
標籤:
