Возврат наблюдаемого в зависимости от другого наблюдаемого условия - PullRequest
0 голосов
/ 11 июля 2019

Мне нужно вернуть наблюдаемую информацию в зависимости от некоторых условий другой наблюдаемой, поэтому, если идентификаторы в хранилище отличаются, отправьте обновленные данные во внешнюю наблюдаемую, если нет, не отправляйте обновления, мне нужна эта функция для поддержки мульти вкладка, поэтому каждая вкладка имеет свою загрузку и не влияет на другую, Таким образом, этот код будет возвращать данные только в случае изменения search_id, что мы должны возвращать во внешнем наблюдаемом случае, если нет изменений ???

       this.data$ = this.getTopData$('book').pipe(
        map(data => {
               this.store
              .select(currentSearchSelector)
              .pipe(bufferCount(2))
             .subscribe(([previousSearch, currentSearch]) => {
             if ( previousSearch.id !== currentSearch.id ) {

               return data;
             }else
              {
               //what should I return here?
              }

             })
            })    
        ),

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

1 Ответ

0 голосов
/ 11 июля 2019

Я немного исправил код, вы можете использовать never(), чтобы ничего не излучать в поток и, следовательно, не обновлять представление.

this.getTopData$('book').pipe(
        switchMap(data =>this.store.select(currentSearchSelector).pipe(bufferCount(2))),
        switchMap(([previousSearch, currentSearch]) => {
             if ( previousSearch.id !== currentSearch.id ) {
               return of(data);
               }
              else return never()
       }})
       ).subscribe()
...