为了账号安全,请及时绑定邮箱和手机立即绑定

RxJS模拟App退出功能,两秒内两次点击则退出

RxJS模拟App退出功能,两秒内两次点击则退出

慕容森 2018-10-24 13:36:22
问题描述使用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'))最终实现见楼下我的补充
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

最终实现:

const btn = document.getElementById('btn')const click$ = fromEvent(btn, 'click')const trigger$ = click$.pipe(
  exhaustMap(() => {    console.log('tap')    return merge(click$, timer(2000)).pipe(take(1))
  })
)
  
click$.pipe(
  buffer(trigger$),
  filter(v => v.length > 1)
).subscribe(v => console.log(v))

tap部分可以实现“再按一次退出”之类的提示


查看完整回答
反对 回复 2018-10-24
  • 1 回答
  • 0 关注
  • 585 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信