Y a-t-il un moyen de s'assurer que l'ordre de mise à jour des abonnés est assuré? J'ai un observable à chaud et mon premier abonné effectue un travail de synchronisation pour mettre à jour une variable et mon prochain abonné doit ensuite initialiser un service (une seule fois!), Et seulement après que cette variable soit configurée!S'assurer que les abonnés reçoivent une mise à jour
il ressemble à ceci:
import App from './App'
var appSource = App.init() // gets the hot observable
// our second subscriber
appSource.take(1).subscribe(() => {
// take 1 to only run this once
nextService.init()
})
où App.init
ressemble à ceci:
...
init() {
var source = this.createObservable() // returns a hot interval observable that fetches a resource every few minutes
// first subscriber, updates the `myVar` every few minutes
source.subscribe((data) => this.myVar = data)
return source
}
...
ceci fonctionne actuellement, mais je ne suis pas sûr si elle suit toujours l'ordre de 100%.
EDIT:
Comme je l'ai entendu, les abonnés seront appelées FIFO. Donc, la commande est quelque peu assurée.
Hey @Brandon, merci pour votre excellente explication! Question sur 'myVar': actuellement,' myVar' représente des données provenant d'une ressource que je dois récupérer toutes les quelques minutes. Pour obtenir ces données j'ai simplement ajouté un 'App.getData()' qui retourne 'this.myVar' quand j'en ai besoin. Je devrais refactoriser mon getMethod à quelque chose comme 'getData => this.myVar.takeLast (1)' pour obtenir les dernières données, correct? –
Encore pire: vous devriez faire 'getData' async:' getData => this.myVar.first() 'et l'appeler comme ceci:' getData(). Subscribe (data => valeur disponible ici); '. Async a tendance à se propager une fois que vous commencez à l'utiliser. C'est pourquoi j'ai dit que c'est un peu un refactor si vous le représentez actuellement comme étant disponible de manière synchrone. – Brandon
Une alternative est de faire ceci: 'this.monVarAsync = this.createObservable(). Do (val => this.myVar = val) .replay (1);'.Cela rendrait la valeur "la plus récente" disponible en tant que variable simple, tout en rendant la valeur changeante asynchrone disponible en tant qu'observable pour quiconque en a besoin. – Brandon