#rxjs
#rxjs
Вопрос:
Как мне преобразовать массив в Observable
массив, чтобы я мог запускать каждый наблюдаемый объект параллельно forkJoin
? Должен ли я написать свою собственную функцию map и создать новый наблюдаемый массив или есть какая-либо rxjs
функция util для этого?
Комментарии:
1. Попробуйте использовать
from
operator2.
from
просто сделал бы его наблюдаемым, который содержит массив. Что я ищу: например, [‘current’, ‘savings’, ‘investment’] => преобразовать в [наблюдаемый, наблюдаемый, наблюдаемый]3. Если вы просто хотите создать массив, содержащий наблюдаемые, выполните
array.map(v => getObservable(v))
4. нет, вы перепутали
of
from
операторы and, second будет делать то, что вы хотите
Ответ №1:
Вот пример превращения массива чисел в массив timer
наблюдаемых, а затем одновременного их forkJoin
запуска. Никаких специальных функций RxJS не требуется. Базовый Javascript Array#map
работает просто отлично.
const arrayOfVal = [1000, 1200, 800, 50, 5000];
const arrayOfObs = arrayOfVal.map((tick, index) =>
timer(tick).pipe(
tap(_ => console.log(index " fired!"))
)
);
forkJoin(arrayOfObs).subscribe(console.log); // output: [0, 0, 0, 0, 0]
или конденсируется без tap
оператора
forkJoin([1000, 1200, 800, 50, 5000].map(v => timer(v))).subscribe(console.log)