Всё асинхронно. Будут циклы. Не надо так делать (с циклами). Это вообще сложная задача. В JavaFx тоже так себе решение. Использовал на практике. Много подводных корней. Делайте архитектуру где single source of truth и передача данных в одну сторону. Будет вам счастье (почти, по модулю что не будет т. н. glitch-freedom, но его дорого обеспечивать - нужно все изменения под STM делать).
Под javafx костыли я делал, там есть проблемы. А single source of truth у меня для девайсов нету. Там установленное состояние отличается от физического до выполнения проверки