[英]How to handle error rxjs using operator from?
在 ngOnChanges 中,我將輸入數據監聽到組件。
ngOnChanges(): void {
from(this.zuPrimaryData).pipe(
max((a, b) => a["nu"] - b["n"])
).subscribe((data) => {
console.log(data);
});
}
第一次this.zuPrimaryData
來自null
ir 出現錯誤,因此 ngChanges 有效。
如果 null,如何處理這個問題並且不創建 stream?
這段代碼不會讓我在模板中獲取數據:
ngOnChanges(): void {
this.zu$ = iif(() => this.data, from(this.data)).pipe(
max((a, b) => a["n"] - b["n"]),
map((data) => data)
);
}
模板是:
{{zu$ | async }}
如果您需要純 RxJS 解決方案,您可以使用iif
條件 function。 嘗試以下
ngOnChanges(): void {
iif(() => this.zuPrimaryData, from(this.zuPrimaryData)).pipe(
max((a, b) => a["nu"] - b["n"])
).subscribe((data) => {
console.log(data);
});
}
此處僅當定義了zuPrimaryData
時才會創建 observable。 如果條件為假,則返回 RxJS EMPTY
常量。
來自EMPTY
文檔:
創建一個不向觀察者發出任何項目並立即發出完整通知的 Observable。
您還可以使條件更加明確以提高可讀性: iif(() => (this.zuPrimaryData && this.zuPrimaryData,== null). from(this.zuPrimaryData))
async
pipe 要使用async
pipe,您需要從 controller 中刪除訂閱。
async
pipeController
result$: any;
ngOnChanges(): void {
this.result$ = iif(() => this.zuPrimaryData, from(this.zuPrimaryData))
.pipe(max((a, b) => a["nu"] - b["n"]));
}
模板
<div>{{ result$ | async }}</div>
async
管道)Controller
result: any;
ngOnChanges(): void {
iif(() => this.zuPrimaryData, from(this.zuPrimaryData))
.pipe(max((a, b) => a["nu"] - b["n"]))
.subscribe(data => this.result = data);
}
模板
<div>{{ result }}</div>
首先檢查 this.zuPrimaryData 是否存在,然后只創建 stream。
ngOnChanges(): void {
if(this.zuPrimaryData) {
from(this.zuPrimaryData).pipe(
max((a, b) => a["nu"] - b["n"])
).subscribe((data) => {
console.log(data);
});
}
}
您可以使用 rxjs 運算符提供的過濾器運算符,如下所示。 只有當您返回 true 時,它才會繼續前進。這種情況下,當值為 null 時,它將強制轉換為 false,並且不會提前 go。
from(this.zuPrimaryData).pipe(
filter(data=>!!data),
max((a, b) => a["nu"] - b["n"])
).subscribe((data) => {
console.log(data);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.