【发布时间】:2021-07-18 16:40:08
【问题描述】:
我需要模拟一个场景,其中我有一个随机获取新推送值或弹出的数字源数组。该数组被用作计算的源,这些计算应在最后一个完成后开始的循环中重复。每次数组更改时,都应该丢弃以前的计算以使用新值重新开始。
这是我的代码
let nums: number[] = []
const nums$ = new Subject()
timer(2000, 5000).pipe(
concatMap(n => of(n).pipe(delay(Math.random() * 1000)))
).subscribe(val => {
nums.push(val)
nums$.next(nums)
})
nums$.pipe(
switchMap(n => of(n).pipe(delay(1000)))
).subscribe(val => {
console.log(val)
nums$.next(nums)
})
第一个计时器应该模拟对数组所做的更改,而第二个管道将计算表示为延迟。
我的解决方案有点脏,即使传递给 switchMap 内的 of 运算符的值未被识别为数组,所以我不知道如何利用 from 运算符。
【问题讨论】:
标签: arrays typescript dynamic rxjs subject