RxJS Отбрасывание дублирующих запросов - PullRequest
0 голосов
/ 30 апреля 2018

При получении сообщений некоторые сообщения могут принадлежать одному и тому же пользователю, поэтому повторная загрузка одного и того же пользователя является избыточной. Сообщение имеет следующее:

  • userId
  • id
  • title
  • body

Вот мой users эпос:

const fetchUserEpic = (action$, store) =>
    action$
        .ofType(UsersActions.FETCH_USER)
        .mergeMap(action => {
            const users = store
                .getState()
                .usersStore.get('users')
                .toJS()

            // Check whether user is already in the store
            if (users[action.payload]) {
                return of(UsersActionCreators.loadCachedUser())
            }

            // Fetch user (and catch errors)
            return ajax
                .getJSON(URL + '/users/' + action.payload)
                .map(res => UsersActionCreators.fetchUserFulfilled(res))
                .catch(err => of(UsersActionCreators.fetchUserRejected(err)))
        })

В моем текущем эпосе для начальных fetch постов мое кеширование не будет работать, но только для более поздних запросов.

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

...