Возьмите, пока пользователь не нажмет, не перетащит или не получит одно значение - PullRequest
0 голосов
/ 20 сентября 2019

Я хочу слушать наблюдаемое, только когда происходит одно из этих трех событий:

  • пользовательские клики
  • пользователь перетаскивает
  • одно значение передается через эту наблюдаемуюЯ слушаю

В настоящее время я написал это так:

this.pointsChange$
            .pipe(
                takeUntil(
                    merge(
                        this.eventService.pipe(flatMap(api => api.userClicked)),
                        this.eventService.pipe(flatMap(api => api.userDragged))
                    )
                ),
                take(1)
            ).subscribe(data => {
                // Do something with data
            });

Работает нормально, однако выглядит для меня немного громоздко, особенно комбинация takeUntil и take(1).Есть ли метод, который может объединить эти две вещи?

1 Ответ

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

Я не вижу ваш код, но кажется, что вы можете

this.pointsChange$
      .pipe(
        takeUntil(
            this.eventService.pipe(flatMap(api => merge(api.userClicked, api.userDragged))
        ),
        take(1)
      ).subscribe(data => {
      // Do something with data
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...