Как использовать трубу внутри SwitchMap - PullRequest
0 голосов
/ 20 апреля 2020

Это оригинальный код.

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 секунды после последнего нажатия.

Вот моя попытка, 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));

Я должен использовать switchMap. (Я не могу использовать debounceTime или throtleTime)

1 Ответ

1 голос
/ 20 апреля 2020
switchMapTo(timer(2000).pipe(mapTo("yayyyy")))

должно быть все, что вам нужно.

...