Задать вопрос
@Hidralisk

Доступ с множественных инстансов к методу?

Всем привет.
Есть такой вопрос.
Существует 2 (или много) инстансов приложения. Есть сервис с каким то условным методом run()
run() запускает асинхронную задачу и возвращает какой то ответ. run() дергается через контролер.
Задача в том чтобы при множественных одинаковых входящих запросах запускать run() один раз .. При повторных соответственно отдавать статусы ответа "в процессе" или "такой запрос уже выполнен".
Как правильно синхронизировать между многими инстансами данный метод ?
  • Вопрос задан
  • 179 просмотров
Подписаться 3 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
  • Академия Эдюсон
    Java-разработчик: тариф Базовый
    8 месяцев
    Далее
  • Skillbox
    Профессия Java-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
Сохраняете состояние в run и при вызове проверяете.
Например так:

async run() {
     if (this.isRunning) return 'in process'
     this.isRunning = true
     await doTask()
     this.isRunning = false
}


Можно в isRunning использовать промис и возвращать его, тогда все кто вызывает run() смогут дождаться результата выполнения задачи.
в конце isRunning или обнулять, если run() вызывается много раз, или так оставить, тогда все последующие вызовы будут возвращать тот же результат даже после того как запрос уже давно выполнен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы