Двойной вызов метода

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
workpage
Сообщения: 436
Зарегистрирован: Чт авг 24, 2017 9:38 am
Благодарил (а): 51 раз
Поблагодарили: 86 раз
Контактная информация:

Двойной вызов метода

Сообщение workpage » Вт янв 05, 2021 10:05 pm

При изменении свойства (например в ручную) привязанный к нему метод вызывается два раза.
Соответственно say из этого метода тоже произносится два раза.
Куда копать?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Двойной вызов метода

Сообщение Chainik » Вт янв 05, 2021 10:30 pm

В первую очередь, надо посмотреть, не записан ли случайно код метода и в метод класса, и в метод объекта. Т.е. строчка с say присутствует и там, и там, при этом в методе объекта в пункте "Вызывать родительский метод" указано "перед..." или "после...".
Наверняка, здесь "собака порылась".
workpage
Сообщения: 436
Зарегистрирован: Чт авг 24, 2017 9:38 am
Благодарил (а): 51 раз
Поблагодарили: 86 раз
Контактная информация:

Re: Двойной вызов метода

Сообщение workpage » Вт янв 05, 2021 10:36 pm

Ага. Нашёл кое-что.
Создал тестовое свойство и тестовый метод в том же объекте.
Он работает нормально без задвоений!
Единственное отличие состоит в том, что проблемные свойства прикручены к mqtt...
Если изменение свойства происходят по инициативе mqtt - всё нормально. Если вручную - задвоение.
Любые идеи...
Аватара пользователя
~220v
Сообщения: 96
Зарегистрирован: Пн дек 23, 2019 5:56 pm
Благодарил (а): 109 раз
Поблагодарили: 18 раз

Re: Двойной вызов метода

Сообщение ~220v » Вт мар 16, 2021 11:00 pm

workpage писал(а):
Вт янв 05, 2021 10:36 pm
Единственное отличие состоит в том, что проблемные свойства прикручены к mqtt...
Тоже разбирался с такой же проблемой. Обнаружил что первая сработка метода идёт от ручной правки свойства (или от какого-то скрипта). Это видно в самом свойстве, если быстро (до 2-й сработки метода) обновить страницу с нужным свойством.
Если через время (после 2-й сработки) опять обновить страницу с нашим свойством, то видно что обновление пришло уже от MQTT :shock:

Подозреваю что изменённое свойство идёт в MQTT, а из MQTT опять в свойство :? Возможно если поставить опцию "только чтение" в настройках MQTT такого не будет, не проверял...
Ответить