如何在switchMap内使用管道

时间:2020-04-20 19:54:49

标签: rxjs ngrx

这是original代码。

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),
  delay(2000),
  mapTo("yayyyy")
);
const subscribe = example.subscribe(val => console.log(val));

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

这是我的尝试,没出现。

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));

我必须使用switchMap。 (我不能使用debounceTime或throtleTime)

1 个答案:

答案 0 :(得分:1)

switchMapTo(timer(2000).pipe(mapTo("yayyyy")))

应该满足您的所有需求。