Страница 1 из 1

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

Добавлено: Вт янв 05, 2021 10:05 pm
workpage
При изменении свойства (например в ручную) привязанный к нему метод вызывается два раза.
Соответственно say из этого метода тоже произносится два раза.
Куда копать?

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

Добавлено: Вт янв 05, 2021 10:30 pm
Chainik
В первую очередь, надо посмотреть, не записан ли случайно код метода и в метод класса, и в метод объекта. Т.е. строчка с say присутствует и там, и там, при этом в методе объекта в пункте "Вызывать родительский метод" указано "перед..." или "после...".
Наверняка, здесь "собака порылась".

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

Добавлено: Вт янв 05, 2021 10:36 pm
workpage
Ага. Нашёл кое-что.
Создал тестовое свойство и тестовый метод в том же объекте.
Он работает нормально без задвоений!
Единственное отличие состоит в том, что проблемные свойства прикручены к mqtt...
Если изменение свойства происходят по инициативе mqtt - всё нормально. Если вручную - задвоение.
Любые идеи...

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

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

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