Как сделать асинхронный запрос в getter?

Приветствую. Задачка следующая: в геттере свойства класса подгружать данные по сети. Зачем? Это вопрос удобства, который пока что носит экспериментальный характер с целью погрузиться в тонкости node.js. Меня сейчас интересуют не обязательно правильные проверенные методы решения - подойдут любые рабочие костыли. Но сразу оговорю несколько уже известных.

1. Синхронный запрос - не вариант, потому что бедняга event loop уснёт до возвращения ответа.
2. async/await - было бы здорово, если бы эта парочка здесь себя проявляла, но в этом случае геттер будет возвращать промис, когда должен возвращать значение.
3. Многопоточность с приостановкой потока из главного процесса - пока что самый привлекательный вариант, если не брать в расчёт нагрузку неограниченного количества потоков. Хотя она, в принципе, решается пулом, но так создаются дополнительные барьеры на количество одновременных запросов.

В идеале хотелось бы как-то ставить заглушку в этой функции, как это делает yield, чтобы по возвращении ловить event loop и продолжать с того же места в одном потоке. Но именно этот оператор в геттере пользы не принесёт.

Уважаемые знатоки, жду ваши предложения)
  • Вопрос задан
  • 410 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
Геттеры синхронные по своей природе, единственный вариант - возвращать промис
Ну и вообще, геттеры не для этого созданы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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