Наблюдаемые значения излучения не задерживаются - PullRequest
1 голос
/ 15 марта 2019

Я пытаюсь создать наблюдаемую, которая будет излучать отложенные значения. Однако значения становятся мгновенно. Я создал стек-блиц на https://stackblitz.com/edit/typescript-cwixas. Код приведен ниже:

import { of } from 'rxjs';
import { map, delay } from 'rxjs/operators';

const arr = [1,2,3,4,5];
const source = of(...arr);
const source2 = source.pipe(delay(2000));
const subscribe = source2.subscribe(val => console.log(val));

1 Ответ

2 голосов
/ 15 марта 2019

Оператор delay() просто добавляет задержку к каждому значению next, но ему все равно, истекла ли предыдущая задержка.

Так что здесь происходит, что of() немедленно испускает 5 значений, где все 5 запланированы для повторной передачи delay одновременно через 2 с.

Вы должны будете использовать, например, concatMap, который будет проецировать каждое значение в Observable и ждать, пока это не завершится. Только после этого продолжайте с другим значением:

const arr = [1,2,3,4,5];
const source = of(...arr).pipe(
  concatMap(value => of(value).pipe(
    delay(2000),
  )),
);

source.subscribe(...);

Демонстрация вашего обновления: https://stackblitz.com/edit/typescript-cknhbr?file=index.ts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...