我正在嘗試從 Angular 中的 HttpClient 獲取串列,但在從 Observable 轉換資料時遇到問題。
我也嘗試過使用靜態值,但我得到了相同的結果。當我嘗試使用 map() 轉換 Observable 中的值時,我得到未修改的結果。看這兩個例子:
import { from, map, Observable, of } from 'rxjs';
// First example:
const observableOne$: Observable<number[]> = of([1, 2, 3]);
observableOne$.pipe(
map((items: number[]) => {
console.log('This will be ignored');
return items.map((item: number): number => item 100);
}),
map((items: number[]) => {
console.log('This will also be ignored');
items.push(4);
})
);
observableOne$.subscribe((items: number[]) => console.log('First:', items));
// Output will be:
// First: [1, 2, 3]
// Second example:
const observableTwo$: Observable<number> = from([1, 2, 3]);
observableTwo$.pipe(map((item: number) => item 100));
observableTwo$.subscribe((items: number) => console.log('Second:', items));
// Output will be:
// Second: 1
// Second: 2
// Second: 3
有什么建議么?
uj5u.com熱心網友回復:
使用 apipe()不會修改原始Observable. 相反,它會創建一個新 Observable的,需要有人訂閱。因此,當您訂閱 時ObservableOne$,您只會得到原始發出的值。
你必須要subscribe回傳Observable的pipe。
const observableOne$: Observable<number[]> = of([1, 2, 3]);
observableOne$.pipe(
map((items: number[]) => {
console.log('This will be ignored');
return items.map((item: number): number => item 100);
}),
map((items: number[]) => {
console.log('This will also be ignored');
items.push(4);
return items
})
).subscribe((items: number[]) => console.log('First:', items));
另請注意,您錯過了return第二個中的陳述map。如果您在 a 中沒有return陳述句map,它只會回傳undefined,它將被進一步傳遞到鏈中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/493816.html
