Пытаюсь изучить Angular и RxJS, и я немного запутался в том, что должен вернуть сервис данных. Последовательность объектов или массив объектов? Какая лучшая практика?
import { from, of } from 'rxjs';
import {map, toArray} from 'rxjs/operators';
const items = [
{id: 1, name: "foo"},
{id: 2, name: "bar"}
];
// "Standard" map behaviour going throuch each item of the array
const names = items.map( item => item );
Версия 1:
чтобы иметь эквивалент Array.prototype.map()
с RxJS map
Я бы работал с последовательностью объектов:
// I can go directly through the items using map and then use toArray()
const version1 = from(items).pipe(
map(item => item),
toArray(),
).subscribe(
name => console.log('version1', item)
);
Версия 2:
Чтобы сделать то же самое с Observable, испускающим массив объектов:
const version2 = of(items).pipe(
map(items => items.map( item => item)) // weird nested mapping
).subscribe(
item => console.log('version2', item)
);
Версия 2 выглядит странно, так как я должен сделать «вложенную» карту, чтобы просто просмотреть свои элементы.
Поскольку метод Angular HttpClient get()
действительно возвращает массив объектов, я должен перейти на версию 2, но он не выглядит "естественным" для работы. В любом случае, я должен получить массив объектов ...
Итак, версия 1 или версия 2?