使用RxJS来模拟App的连续两次点击退出功能
使用了两种方法,都不是很满意,有没有更好的办法?
方法一:使用bufferTime操作符
出现的问题是,bufferTime的缓冲时间不是以点击为起始,可能导致点击一次之后立刻发出值
click$.pipe( bufferTime(2000, null, 2), filter(v => v.length >= 2) ).subscribe(() => console.log('success'))
方法二: 使用concatMap处理点击事件,并给第一次点击做节流
出现的问题是,'succsss'之后在节流时间里无法响应点击事件
click$.pipe( throttleTime(2000), tap(() => console.log('one')), concatMap(() => click$.pipe( tap(() => console.log('two')), take(1), takeUntil(of(1).pipe(delay(2000))) )) ).subscribe(v => console.log('success'))
最终实现见楼下我的补充
largeQ
相关分类