@perkthefox Надо чейнить async логику из разных источников. В NgRx есть такая штука как Effects, которая позволяет изменять/добавлять/передвигать логику в async коде.
Например есть actions: LOAD_USERS, LOAD_USERS_SUCCESS, LOAD_USERS_FAIL
когда клиент вызывает LOAD_USERS - отправляется запрос на получения юзеров. При удаче он автоматически имитит ...SUCCESS (с полученными юзерами) и ...FAIL при ошибке.
Все просто, но допустим мне теперь надо каждый раз когда прилетает LOAD_USERS_SUCCESS мне нужно имитить LOAD_USER_LOCATIONS, и при получении LOAD_USER_LOCATIONS_SUCCESS я должен сохранить только те локации которые юзер указал у себя в настройках как "Важные" (important).
Но в то время пока LOAD_USER_LOCATIONS запрос обрабатывается (до получения данных через LOAD_USER_LOCATIONS_SUCCESS) мне надо имитить другие операции...
Кейс так себе, но может показать наколько сложно-зависимые request/action pipes могут быть при разработке.
И это только я описал benefits of using @ngrx/Effects.
Один из самых больших плюсов в ngrx - это селекторы, которые помогают тебе вытаскивать из storage только те данные которые тебе действительно нужны