无法在离子按钮单击事件上使用debounceTime

时间:2019-12-10 18:02:20

标签: ionic-framework rxjs ionic4 subject debounce

目前,我有一个带有单击事件的离子按钮,该按钮调用一种方法。

<ion-button expand="full" color="primary" (click)="sendMsg()">Tap</ion-button>

sendMsg方法包含用于将对象推送到数组并在某些情况下打开模式的语句。

sendMsg = () =>{ // statements to push an objects to an array(this is an array displays on chat page); this.openModal(); }

async openModal() { const myModal = await this.modalController.create({ component: ModalPage, componentProps: { firstAction: this.firstAction, secondAction: this.secondAction, thirdAction: this.thirdAction }, cssClass: 'modal-css', backdropDismiss: false }); 这是一个聊天页面,单击TAP按钮可获取消息,而在两者之间点击可显示离子模态。这里的问题是,当我们点击超级快而点击事件之一中出现模态时,由于我们正在快速点击,所以我看到的消息显示是模态出现后应该显示的。

为避免这种情况,我想到添加debounceTime,它可能会有一些时间延迟,并考虑了最新的click事件,并且在正常的角度世界中都有效。

我遵循了https://coryrylan.com/blog/creating-a-custom-debounce-click-directive-in-angular,但是在离子模式下却无效。

任何想法都很感激。

1 个答案:

答案 0 :(得分:0)

将主题用作事件发出源并从那里控制点击率

const openModalAction=new Subject()
sendMsg = () =>{
// statements to push an objects to an array(this is an array displays on chat page);
openModalAction.next()
}

const openModal=defer(()=>from(this.modalController.create({
      component: ModalPage,
      componentProps: {
        firstAction: this.firstAction,
        secondAction: this.secondAction,
        thirdAction: this.thirdAction
      },
      cssClass: 'modal-css',
      backdropDismiss: false
    })))

const openModalAction.pipe(dounceTime(1000),switchMap(_=>openModal)