Создать поток значений через случайные интервалы в rxjs6? - PullRequest
0 голосов
/ 06 февраля 2019

Как я могу установить значение randomIntervals для каждой итерации интервала?

import {random} from 'lodash'
import {interval, timer} from 'rxjs';
import {takeUntil} from 'rxjs/operators';

const timer$ = timer(5000);
const randomInterval = random(100, 1000);
const source = interval(randomInterval)
  .pipe(
    takeUntil(timer$)
  );
source.subscribe(console.log)

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

А как насчет этого?Нулевой интервал, который возвращает элементы со случайной задержкой.

const { interval, of } = rxjs;
const { concatMap, delay } = rxjs.operators;

interval(0).pipe(
  concatMap(i => of(i).pipe(delay(Math.random() * 5000)))
).subscribe(val => { console.log(val); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>
0 голосов
/ 06 февраля 2019

Я не думаю, что вы можете указать случайный интервал, но вы можете использовать тайм-аут

const { BehaviorSubject } = rxjs;

const random$ = new BehaviorSubject(1);

random$.subscribe(val => { console.log(val); });

random();

function random() {
  random$.next(random$.getValue() + 1);
  setTimeout(random, Math.random() * 5000);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>

Или есть этот ответ

RXJS: Как я могу генерировать поток чисел через случайные интервалы (в пределах указанного диапазона)

...