Il mio problema è con JavaScript nel browser, ma suppongo che potrebbe applicarsi a qualsiasi ambiente basato su eventi.
Ho codificato un widget nella mia app. Il widget consente all'utente di selezionare un oggetto utilizzando 3 diversi sotto-widget (tabella, mappa e galleria). I sotto-widget visualizzano gli stessi elementi e una selezione può essere fatta da qualsiasi sotto-widget che l'utente preferisce usare. Ogni volta che una selezione viene effettuata dall'utente o impostata nel codice, l'evento "selezione-modificata" viene attivato dal sotto-widget. Il widget principale ascolta questi eventi "selezionati-modificati".
Questo ha funzionato bene fino a quando ho iniziato ad andare oltre con il progetto e ho realizzato che dovevo regolare la selezione negli altri 2 widget quando la selezione cambia (se l'utente seleziona un elemento sulla mappa, dovrebbe evidenziare lo stesso elemento nel tavolo e nella galleria). Il problema è che quando imposto la selezione negli altri 2 sub-widget, attivano l'evento "selection-changed" e questo diventa piuttosto ricorsivo. Questo succede anche quando ho bisogno di cancellare la selezione in tutti i sotto-widget (ottengo 3 eventi "selezionati-modificati" con gli stessi dati vuoti). Ciò porta a numerose chiamate ridondanti fatte per risorse esterne e mi dà la sensazione che in futuro porterà a ulteriori problemi.
Quindi la mia domanda è che sto facendo degli eventi, giusto? La risposta è ovviamente "no" perché mi sono coccolato in un sottaceto così presto, ma mi chiedo come le altre persone usino gli eventi senza entrare in questi problemi - che tipo di architettura sarebbe meglio in questa situazione?
Forse potrei avere un modo di impostare e cancellare le selezioni nei sub-widget che non vanno a fuoco per l'evento ma questo sembra un hack e potrebbe finire in conflitto con il framework che sto usando per gestire il mio views / modelli.