через декоратор.
Условно у меня есть декоратор:
export const SUBSCRIBER_FN_REF_MAP = new Map();
export const SUBSCRIBER_FIXED_FN_REF_MAP = new Map();
export const SUBSCRIBER_OBJ_REF_MAP = new Map();
export function SubscribeTo(topic) {
return (target, propertyKey, descriptor) => {
const originalMethod = target[propertyKey];
SUBSCRIBER_FN_REF_MAP.set(topic, originalMethod);
SUBSCRIBER_OBJ_REF_MAP.set(topic, target);
return descriptor;
};
}
Я использую декоратор в отдельном сервисе:
@SubscribeTo(TOPICS_LIST.NEW_EMPLOYEES)
async syncGlobalIdWithEmployee(payload}) {
...
}
И использую в третьем месте:
const functionRef = SUBSCRIBER_FN_REF_MAP.get(topic);
const object = SUBSCRIBER_OBJ_REF_MAP.get(topic);
await functionRef.apply(object, [messageBody]);
И в таком случае, так как я сохраняю переданную функцию отдельно в мапе, у меня теряется контекст this в функции syncGlobalIdWithEmployee. Вопрос, как его правильнее всего было бы сохранить?
https://t.me/nodejs_ru
Обсуждают сегодня