Здравствуйте. Столкнулся с проблемой при использовании паттерна observer. Ситуация такая: мне приходит от пользователя сообщение, и мне надо сделать следующее:
1) Получить часовой пояс с помощью экземпляра класса googleMapsAPI
const zone = await geoTime.getTimeZone(msg.text)
2) Получить все раннее записанные данные в Redis
const user = await redisApi.getUserForSave(msg.from.id)
3) Записать это всё в MySQL. И в зависимости от кода ответа и наличия ошибки ответить пользователю
const code = await sql.saveUser(user);
code === 'good' ? bot.sendMessage(msg.from.id, 'Good') : bot.sendMessage(msg.from.id, 'Good');
В итоге код получается громоздкий. И нарушается связность между модулями:
observer.on('end', (msg) => {
const zone = await geoTime.getTimeZone(msg.text);
const user = await redisApi.getUserForSave(msg.from.id);
const code = await sql.saveUser(user);
code === 'good' ? bot.sendMessage(msg.from.id, 'Good') : bot.sendMessage(msg.from.id, 'Good');
})
Это я немного упростил код и логику. В реальной жизни всё чуть сложнее. Как правильно быть в такой ситуации?