Как использовать метчик с наблюдаемым - PullRequest
0 голосов
/ 06 декабря 2018

Я получаю данные пользователя с flatMap, и мне также нужно получить поток байтов изображения пользователя:

this.authStore.jwtContainer$.pipe(
    tap(j => {
        foo = this.userService.getUserImageDataUrl(j.userImageObjectKey).subscribe(i => foo = i);
        console.log(j);
    }),
    flatMap(x => this.userService.getUserById(x.userLoginId)))
    .subscribe(z => this.user = z);

Этот код работает, но у меня, кажется, происходит двойная подписка, есть лиспособ сделать оба вызова активными асинхронными на основе подписки jwtContainer?

1 Ответ

0 голосов
/ 06 декабря 2018

Да.Вы можете использовать forkJoin, чтобы объединить все наблюдаемые и запустить их параллельно:

this.authStore.jwtContainer$.pipe(
    flatMap(x =>
        forkJoin([
            this.userService.getUserImageDataUrl(x.userImageObjectKey),
            this.userService.getUserById(x.userLoginId)])))
    .subscribe(([image,user]) => this.user = user);

Обратите внимание, что forkJoin придется ждать завершения всех своих наблюдаемых, прежде чемможет выдавать окончательные агрегированные результаты в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...