Nano Hash - криптовалюты, майнинг, программирование

Как повторно использовать равные ожидающие HTTP-запросы, наблюдаемые в angular 4

В моем проекте, иногда из-за ошибок, которые я делаю, или из-за того, что делает новый член команды, бывают случаи, когда HTTP-запрос с некоторыми конкретными параметрами отправляется удаленному бэкэнду более одного раза в одно и то же время (имеется в виду то же самое запрос будет отображаться в браузере http-запросы в инструментах разработчика дважды как ожидающие).

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

Очевидное решение здесь - всегда быть уверенным, что мы получаем ответ на запрос определенного типа, прежде чем отправлять следующий запрос того же типа (и параметров). Но я думал, что должен быть способ убедиться в общем, что если какой-то запрос должен быть отправлен с помощью angular http-службы, если этот запрос уже существует с ожидающим статусом, служба могла бы вернуть ТАКОЕ наблюдаемое, которое было возвращается предыдущим запросом, который уже ожидает обработки (что решит некоторые беспорядочные случаи, когда у меня есть два разных и несвязанных компонента, выполняющих один и тот же запрос один за другим, это заставит их обоих подписаться на один и тот же наблюдаемый объект).

У нас уже есть служба, которая объединяет все виды использования в нашем проекте с помощью http.

Вопрос в том, как я могу добиться такого поведения (или если по какой-то причине моя идея неверна и, может быть, мне не следует стремиться к такому поведению?), Я ищу наиболее простое доступное решение (возможно, есть что-то уже внедрено angular для достижения того, что я пропустил?) или в случае, если нет какого-то наблюдаемого решения, которое проверяло бы каждый запрос, который мы собираемся сделать, если запрос уже существует с ожидающим статусом


  • Отформатируйте этот вопрос, используя абзацы и т. Д. 04.09.2017
  • Теперь это понятно? 04.09.2017
  • Возможно, вам это покажется интересным: hackernoon.com/ 04.09.2017
  • Это могло быть то, что я искал, я искал только решение пункта 4 в ссылке о предотвращении случая наличия 2 идентичных запросов со статусом завершения, я видел некоторые функции в источнике о проверке запроса на полет, но я не мог ' Я обдумываю, как код проверяет, существует ли запрос в состоянии ожидания. Если бы вы могли сосредоточить меня на том, как вы достигли этого, это действительно могло бы направить меня в правильном направлении 05.09.2017

Ответы:


1

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

Rx.Observable
  .interval(300) // every 300ms
  .mapTo(Math.floor(Math.random() * 10) // emit a number from 0 to 9
  .distinctUntilChanged() // if number is the same, ignore it
  .flatMap(number => this.exampleService.makeRequest(number)) // make a request for a unique number
  .subscribe(response => console.log(response)); // log response
04.09.2017
  • Я не могу понять, как этот пример кадра является ответом на вопрос 05.09.2017

  • 2

    Проблема может заключаться в множественной подписке:

    var res = this.myService.get();
    var firstSubscription = res.subscribe(); // first http call
    var firstSubscription = res.subscribe(); // second
    

    Попробуйте использовать операторы многоадресной рассылки:

    var resShared = this.myService.get().share();
    
    05.09.2017
  • Насколько я понимаю, это решение предназначено только для тех случаев, когда две части моего кода работают с одной и той же наблюдаемой, которая является результатом HTTP-вызова. Это не поможет, если 2 несвязанных компонента выполняют один и тот же HTTP-вызов, потому что они получат 2 разных наблюдаемых, потому что это поведение службы http по умолчанию, поэтому этот ответ вообще не решает вопрос 05.09.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..