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