Генерация потока с задержками для каждого выброса в дротике - PullRequest
0 голосов
/ 03 января 2019

Я хочу выдавать значения в потоке из списка с определенной задержкой в ​​дротике.

Итак, из [1,2,3], который является обычным списком, я хочу выдавать значения типа 1...2...3 в отдельных событиях.

Я пробовал что-то вроде этого

List<int> myList = [1,2,3];
Subject _current = BehaviorSubject<int>();
Stream<int> get current$ => _current.stream.delay(Duration(seconds:1));

myList.forEach(current.add);

Но вместо этого я получаю ...123, так что это задерживает весь поток на 1 секунду, а не на каждое значение в списке.

Есть идеи? Спасибо

Ответы [ 2 ]

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

Мне удалось заставить его работать

Observable.range(myList)
  .concatMap((i) =>
    new Observable.timer(i, new Duration(seconds: 1))
  .listen(print);

Из самой документации rxdart . Спасибо Гюнтеру за хороший совет.

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

rxdart

Пакет

предоставляет задержку трансформатор или метод, который делает это

new Observable.fromIterable([1, 2, 3, 4])
  .delay(new Duration(seconds: 1))
  .listen(print); // [after one second delay] prints 1, 2, 3, 4 immediately

Есть и другие, такие как debounce

...