2016-10-11 1 views
2

Puis-je créer une file d'attente de messages de pub/sous-message avec RxJS dans l'application angulajs? J'ai par exemple deux modules: ModuleA ModuleB Ils existent sous forme de paquet npm séparé mais connectés dans ModuleC - c'est le shell principal.Utilisation de RxJS pour implémenter MessageBus pour la communication entre les modules angularjs

Je ne souhaite pas créer de dépendance en tant que ModuleD et créer un couplage étroit entre les modules. Donc, ma pensée est de créer un bus de message en utilisant RxJS. Est-ce possible?

Je présument une API ressemblera que: RxQueue.subscribe("name:of:the:queuemessage", handler => { handler.result }); RxQueue.create("name:of:the:queuemessage", (observer) => { // implementation of usual Rx subscribtion })

+0

Utilisez [RxJS Extensions for Angular] (https://github.com/Reactive-Extensions/rx.angular.js). – georgeawg

+0

@georgeawg n'est pas pertinent pour le problème. Je ne veux pas créer de couplage entre les modules. – IamStalker

Répondre

0

Il pourrait ne pas être exactement ce que vous recherchez, mais pour le partage de l'état et des données entre les différents composants et modules, vous pouvez utiliser Redux/NGRX magasin. Redux est une architecture dans laquelle vous pouvez envoyer un état à un point de vente. Le magasin se mettra à jour et informera tous ceux qui l'écoutent si quelque chose a changé. Par conséquent, vos modules peuvent s'abonner au magasin et écouter des événements. S'ils veulent communiquer, ils peuvent envoyer un message au magasin. Le magasin informerait alors tout le monde si quelque chose a changé. Une différence est que cet objet stockera réellement cet objet comme le ferait une base de données temporaire. Ce n'est pas vraiment le comportement de la file d'attente.

Commander http://redux.js.org/ pour plus d'informations.

+0

Salut, merci pour la réponse - Mais je cherche vraiment un comportement de file d'attente. J'envisageais une mise en œuvre redux, mais c'est une surcharge pour ma mise en œuvre concrète. Et en l'utilisant avec angularjs (ng1) c'est en fait redondant. Mais je vais reconsidérer si vous serez en mesure de me montrer un bon exemple de travail. Bien sûr, si ce n'est pas un problème pour vous mec. – IamStalker