代码之家  ›  专栏  ›  技术社区  ›  Andre Elrico

为什么debounceTime不能与tap操作员一起工作

  •  0
  • Andre Elrico  · 技术社区  · 4 年前

    文档中的stackblitz略有更改:

    https://stackblitz.com/edit/typescript-hg2xdz?file=index.ts

    • 检查控制台输出

    我想要和期待的是:

    我希望当我触发keyup事件时 of(null)

    • throttleTime 也不行
    • delay

    (我的假设):也许吧 of

    有人能澄清一下吗?非常感谢。

    代码副本:

    keyup$
      .pipe(
        switchMap(() =>
          of(null).pipe(
            debounceTime(1000),
            tap(() => console.log("tap runs"))
          )
        )
      )
      .subscribe(console.log);
    
    0 回复  |  直到 4 年前
        1
  •  1
  •   kvetis    4 年前

    debounce 获取时间窗口中的最后一个值并发射它。由于操作符知道在源可观测完成时不会发出新值,因此它会立即发出值并完成。

    修复您的代码将使用 delay ,因为你已经有了 switchMap 有一种方法可以模仿 思维方式但是-

    我不知道您的用例是什么,但是 在输入中更简单:

    keyup$
      .pipe(
         debounceTime(1000),
         tap(() => console.log("tap runs")),
      )
      .subscribe(console.log);