У меня есть следующий класс и массивBuffer сгруппированных наблюдаемыми
class Hero {
id: number;
name: string;
}
const HEROES: Hero[] = [
{ id: 11, name: 'Narco' },
{ id: 12, name: 'Narco' },
{ id: 13, name: 'Bombasto' },
{ id: 14, name: 'Bombasto' },
{ id: 15, name: 'Bombasto' },
{ id: 16, name: 'Dynama' },
{ id: 17, name: 'Dynama' },
{ id: 18, name: 'Dynama' },
{ id: 19, name: 'Dynama' },
{ id: 20, name: 'Dynama' }
];
Я хочу создать наблюдаемым, что лечит HEROES
массив в качестве источника, группы массива по name
и излучает результат в виде единого массива, т.е. , Я должен получить три массива, один для Narco
, один для Bombasto
и один для Dynama
.
я могу создать свой источник наблюдаемого следующий
var heroSource = Observable.create((observer:any) => {
HEROES.forEach((hero: Hero) => {
observer.next(hero);
})
});
Я могу тогда группа Heros с помощью groupBy
, то есть,
var groupHeroSource = heroSource
.groupBy((hero: Hero) => {return hero.name});
Это фактически дает мне столько наблюдаемого, как есть разные имена мой массив HEROES
(три в этом случае). Тем не менее, они будут выбрасываться как последовательность, и в идеале я бы хотел до buffer
их до тех пор, пока heroSource
не будет завершен. Как использовать оператор buffer
в rxjs на моих сгруппированных наблюдаемых, чтобы испустить одну коллекцию?