Заметно, что циклические значения корыта - PullRequest
0 голосов
/ 10 января 2019

У меня есть две наблюдаемые, которые застегиваются на молнии. Один генерирует поток событий из внешнего источника, а другой генерирует поток предварительно определенных строк.

Пример кода:

import { interval, of, zip } from "rxjs";
import { pipe, mapTo } from "rxjs/operators";

let ticks$ = interval(1000).pipe(mapTo("Tick"));
let words$ = of("foo", "bar"); 

let ticker$ = zip(ticks$, words$);

ticker$.subscribe((e) => console.log(e));

Этот код работает должным образом и выводит до тех пор, пока в элементах words$ не закончатся элементы, после чего он завершится, и ticker$ остановится:

#=> ["Tick", "foo"]
#=> ["Tick", "bar"]

Пока все хорошо. Работает в соответствии с документацией для #of:

Наблюдаемая, которая генерирует аргументы, описанные выше, а затем завершает.


Теперь я бы хотел, чтобы words$ был зациклен. То есть, когда последний элемент был выпущен, он начинается с начала. Так что ticker$ не остановится:

#=> ["Tick", "foo"]
#=> ["Tick", "bar"]
#=> ["Tick", "foo"]
#=> ...

Глядя на документацию, нет функции создания #cycle.

Как я могу создать наблюдаемую, которая циклически перебирает список фиксированных значений?

1 Ответ

0 голосов
/ 10 января 2019

Попробуйте использовать from и объединить с repeat()

let ticks$ = interval(10000).pipe(mapTo("Tick"));
let words$ = from(["foo", "bar"]).pipe(repeat()); 
...