rxjs delayWhen with debounce删除可观察的最后一项

问题描述 投票:0回答:1

我需要处理一个可观察的输出,在该可观察的停止发射3秒钟之后...所以我使用了delayWhen(x => originalObservable.pipe(debounceTime(3000)))...为什么C物品丢失了? ...

//in$ is a Subject

in$.pipe(
  tap(x=> log(4,'item '+x.name+' arrived, wait debounce time...') ),
  delayWhen( () => in$.pipe(debounceTime(3000)) ),
  tap(x=> log(4,'debounce time passed for item '+x.name+', go ahead...'))
).subscribe

//the log is
/*
itme A arrived, wait debounce time...
itme B arrived, wait debounce time...
itme C arrived, wait debounce time...
debounce time passed for item A, go ahead...
debounce time passed for item B, go ahead...
*/
javascript rxjs
1个回答
0
投票

已解决...

let timePassed = 0
setInterval(()=>{
  timePassed += 100;
},100)
let timer = of(timePassed>3000).pipe(filter(x=>x==true))

in$.pipe(
  tap(x=> {
    timePassed = 0;
    log(4,'item '+x.name+' arrived, wait debounce time...')
  }),
  delayWhen( () => timer ),
  tap(x=> log(4,'debounce time passed for item '+x.name+', go ahead...'))
).subscribe
© www.soinside.com 2019 - 2024. All rights reserved.