Rxjs 如何在switchMap内部使用管道

Rxjs 如何在switchMap内部使用管道,rxjs,ngrx,Rxjs,Ngrx,这是代码 我有钮扣。当按钮被快速点击几次时,我只想在最后一次点击后2秒显示一次“yayy” 这是我的尝试,yayy从未出现过 import { map, switchMap, delay, tap, mapTo } from "rxjs/operators"; import { of, fromEvent } from "rxjs"; console.log("==================START================="); const click1 = fromEvent

这是代码

我有钮扣。当按钮被快速点击几次时,我只想在最后一次点击后2秒显示一次“yayy”

这是我的尝试,yayy从未出现过

import { map, switchMap, delay, tap, mapTo } from "rxjs/operators";
import { of, fromEvent } from "rxjs";
console.log("==================START=================");
const click1 = fromEvent(document.getElementById("click1"), "click");

const example = click1.pipe(
  mapTo("START"),
  tap(console.log),
  switchMap(_ =>
    of().pipe(
      delay(2000),
      mapTo("yayyyy")
    )
  )
);
const subscribe = example.subscribe(val => console.log(val));
我必须使用开关地图。(我不能使用debounceTime或ThrottleTime)

应该是您所需要的全部。

of()
不会发出任何
next
通知,只会完成。因此,您可以使用of(null)(或任何值)的
,它将正确地发出一个
next
import { map, switchMap, delay, tap, mapTo } from "rxjs/operators";
import { of, fromEvent } from "rxjs";
console.log("==================START=================");
const click1 = fromEvent(document.getElementById("click1"), "click");

const example = click1.pipe(
  mapTo("START"),
  tap(console.log),
  switchMap(_ =>
    of().pipe(
      delay(2000),
      mapTo("yayyyy")
    )
  )
);
const subscribe = example.subscribe(val => console.log(val));
switchMapTo(timer(2000).pipe(mapTo("yayyyy")))