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

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

Пример с проблемой:

  • Здесь у нас есть служба, в которой мы вызываем GetAllCaseCategory(), и по умолчанию она попадает на сервер.

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

Как мы можем решить эту проблему?

• Мы можем решить эту проблему, сделав копию этих поисковых данных внутри моего проекта, чтобы после их получения мне больше не нужно было обращаться к серверу.

• Мы можем управлять им с помощью оператора shareReply(), импортированного из библиотеки Rxjs. Затем он предоставит эти данные как наблюдаемые любому компоненту, который в них нуждается.

• Чтобы использовать shareReply() с наблюдаемым, нам нужно использовать его внутри оператора цепочки pipe().

Пример после решения проблемы:

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

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

Дополнительный:

• Мы также можем использовать BehaviorSubject() для переноса нужных данных, поскольку он возвращает наблюдаемые данные, на которые я могу подписаться.

• BehaviorSubject([ ]) должен иметь начальное значение, так как мы видим, что он пуст в первый раз, а затем после подписки мы передаем ему данные.