В одном из шагов диалога моего бота я запускаю некоторые операции в функции setTimeout()
.
Цель состоит в том, чтобы очистить TimeOut на другом этапе в некоторых условиях.
async saveAdults(step) {
if (step.result) {
step.values.adults = step.result;
const convId = step.context.activity.conversation.id;
const format = "dddd DD MMMM YYYY";
// Send partial notification in case of a delay of 5 minutes
const data = {
checkIn: step.values.checkIn,
nights: step.values.nights,
adults: "",
children: ""
};
const timer = await sendPartialNotification(convId, data);
// step.values.timer = timer;
this.notificationProp.set(step.context, timer);
await this.conversationState.saveChanges(step.context);
}
return await step.next();
}
exports.sendPartialNotification = async (convId, data) => {
const interval = 300000;
const timer = setTimeout(() => {
notify(convId, this.id, data, true);
}, interval);
return timer;
};
async notifyClient(step) {
const timer = this.notificationProp.get(step.context);
clearTimeout(timer);
// …
}
Попытка сохранить объект TimeOut в step.values.timer
или в состоянии диалога выдает эту ошибку, которая указывает, что невозможно проанализировать объект Timeout ...
TypeError: Converting circular structure to JSON
В качестве решения этой проблемы я думал о сохранении timer
в Redis ..
Есть ли идеи? Спасибо.