Как правильно использовать тему rxjs? - PullRequest
1 голос
/ 26 сентября 2019

Я определил функцию обратного вызова, которая принимает событие и вызывается при взаимодействии с пользовательским интерфейсом.Событие содержит данные о проделанных изменениях.Когда вызывается функция CallBack, мне приходится обновлять данные локального хранилища данными из события и отправлять почтовый запрос на сервер.Иногда функция обратного вызова вызывается несколько раз в одно и то же время, и это ожидаемое поведение.Моя проблема заключается в том, чтобы не отправлять иногда несколько запросов на сервер, а отправлять только при отправке только последнего события.

Я пытался что-то подобное, но в некоторых случаях он отправляет много запросов.

callBackFinction: (event) => {
    this.MyService.subject.next(event);
    this.MyService.UpdateData(event);
    this.MyService.subject.pipe(debounceTime(1000)).subscribe(() => {
        http.post('/url', data);
    });
}

1 Ответ

1 голос
/ 26 сентября 2019

Тебе нужен предмет в ngOnInit или constructor.Потому что вы будете генерировать новую подписку при каждом обратном вызове, и там не отписаться.

ngOnInit(): void {
  this.MyService.subject.pipe(debounceTime(1000)).subscribe(data => {
    http.post('/url', data);
  });
}

callBackFinction: (event) => {
    this.MyService.subject.next(event);
    this.MyService.UpdateData(event);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...