可观察到的发射值不会延迟

时间:2019-03-15 12:04:16

标签: rxjs

我正在尝试创建一个可观察的对象,它将发出延迟的值。但是,这些值正不断增加。我在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 个答案:

答案 0 :(得分:2)

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