угловое изменение rxjs асинхронно наблюдается из websocket - PullRequest
0 голосов
/ 23 июня 2019

Привет, я использую angular 7 с rxjs async

в своем компоненте Я использую ngFor с асинхронным наблюдателем

<item-comp [item]="item" *ngFor="let item of groupsService.selectedItems$ | async; ">

</item-comp>

В моем сервисе у меня есть BehaviorSubject, который выдается, когдагруппа выбирается пользователем

  public groupSelected$: BehaviorSubject<any> = new BehaviorSubject(null);

, и это selectedItems $ Observable:

public selectedItems$ = this.groupSelected$.pipe(
    switchMap((group: any) => {
        if (!group)
          return new EmptyObservable();

        return this.http.get('/api/'+ group)
          .pipe(
            map((res: any) => {
                return res.items;
              }
            )
          )
      }
    )
  )

это работает, но теперь мне нужно иметь возможность изменять определенные элементы в ответ на websocketСообщения.У меня есть подключение к веб-сокету, которое обрабатывает сообщения, когда элементы обновляются.Есть ли способ сделать это, используя реактивный подход с rxjs?

1 Ответ

0 голосов
/ 23 июня 2019

Вы можете создать функции более высокого порядка для обновлений веб-сокетов, а затем связать их с вашим http-запросом

const onUpdate=(items)=>updateFromWebSocket.pipe(
   map(itemUpdates=>{........ return updatedItems}
   startWith(items)
)

selectedItems$.pipe(switchMap(items=>onUpdate(items)).subscribe()
...