rx js - как использовать debounceTime для нескольких входящих событий, предназначенных для нескольких различных объектов, в зависимости от внутреннего идентификатора - PullRequest
1 голос
/ 29 марта 2020

относительно следующих топи c: { ссылка }

как я могу настроить этот поток для нескольких входящих событий, которые, в зависимости, скажем, от данного идентификатора объекта ... Итак, я получаю кучу событий с разными идентификаторами объектов и хочу отменить их для каждого идентификатора целевого объекта каждые xxx миллисекунд? Поэтому для каждого идентификатора объекта мне нужен отдельный debouncer, отвечающий только за один идентификатор объекта?

1 Ответ

1 голос
/ 29 марта 2020

Вы можете использовать groupBy для группировки входящих событий по некоторому параметру. Затем обсудите каждую группу отдельно.

import { timer } from 'rxjs';
import { debounce, mergeMap, groupBy } from 'rxjs/operators';

eventStream$.pipe(
  groupBy(event => event.id),
  mergeMap(group$ => group$.pipe(
    debounce(event => timer(idToMillis(event.id)))
  ))
)
...