Как получить массив из rxjs из (array) - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь изучить rxjs и задать один вопрос.Я, например, [1,2,3,4,5] и сделать поток с of([1,2,3,4,5]) После этого я использую

of([1,2,3,4,5])
  .pipe(flatMap((array) => from(array))

, чтобы создать повторяемый поток и знаю только 1 способ вернуть массив:

 .pipe(reduce(acc, data) => [...acc, data], [])) 

(или scan (), но после этого требуется takeLast (1), поэтому я предпочитаю уменьшать здесь)

так есть ли другой способ получить массив из итерируемого?

of([1,2,3,4,5])
  .pipe(flatMap((array) => from(array)))
  .pipe(reduce(acc, data) => [...acc, data], []))

1 Ответ

0 голосов
/ 26 сентября 2019

toArray() - это оператор, которого вы ищете.Кроме того, вы можете разбить массив на отдельные выбросы с помощью оператора concatAll().

const { of } = rxjs;
const { concatAll, tap, toArray } = rxjs.operators;

of([1,2,3,4,5]).pipe(
  concatAll(),
  tap(item => console.log('item is ', item)),
  toArray()
).subscribe(
  result => console.log('result is ', result)
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.3/rxjs.umd.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...