【问题标题】:debounce request on button click with angular使用角度单击按钮时的去抖动请求
【发布时间】:2021-07-04 06:22:39
【问题描述】:

一旦单击按钮,我发现很难使用 Rxjs 对 HTTP 请求实现去抖动。我想要实现的是,当单击按钮时,它应该等待 x 秒,然后才能将帖子发送到服务器。

btnClick() {
    this.loader = true;
    let send = "";
    send = this.checkForm.username.value;
    this.checkService
      .validate(send)
      .pipe(finalize(() => (this.loader = false)))
      .subscribe((response) => {
        console.log(response)
      });
  }

【问题讨论】:

    标签: angular rxjs5


    【解决方案1】:

    我会做一些事情,比如从按钮单击事件处理程序中调用一个主题以插入一些去抖动时间,然后 switchMap 后调用

        btnClicked$: Subject <string> = new Subject<string>();
    
        ngOnInit(): void {
          this.btnClicked$.pipe(
            debounceTime(500),
            switchMap((send) => this.checkService.validate(send).pipe(
              finalize(() => (this.loader = false)))),
            take(1)
          ).subscribe()
        }
    
        btnClick(): void {
          this.btnClicked$.next(this.checkForm.username.value);
        }
    

    【讨论】:

      猜你喜欢
      • 2019-04-18
      • 1970-01-01
      • 2017-12-17
      • 2017-01-16
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      相关资源
      最近更新 更多