2017-10-18 19 views
-1

très nouveau pour Observables donc des excuses si cela est basique, mais j'ai essayé googler, et ne semblent être en mesure de trouver ce que je veux.une fois, puis vérifier si exécuter uniquement observables terminée après - angular2 tapuscrit

Voici un exemple plunkr, très basique.
https://plnkr.co/edit/kgECPQyoKqY7RamebUUu?p=preview

Pourquoi ma méthode Initialized n'est pas appelée jusqu'à ce que mon service l'appelle? Je pensais que le initialized observable serait exécuté dès que je fais Observable.forkJoin ?? Ai-je besoin de démarrer le processus en quelque sorte?

Et pourquoi ma méthode myService.loadOtherData ne semble jamais appeler la méthode d'abonnement ???

Merci à l'avance

Répondre

0

Si vous êtes très nouveau pour Observables, je vous suggère de commencer par un exemple de base.

Par exemple: (pseudo-code, peut-être)

let observable = new Observable<string>(observer => { 
    if (1 == 1) { 
    observer.next("one is one"); 
    } else { 
    observer.error("one is not one"); 
    } 
}); 
observable.subscribe(
    response => console.log(response), 
    error -> console.log(error) 
); 

L'utilisation d'un sujet est plus de même qu'un sujet peut être utilisé un peu plus librement:

let subject = new Subject(); 
subject.subscribe(response -> console.log(response)); 
subject.next('hello'); 

Je crois que je vous vu vous battre les deux, souscrire au sujet puis obtenir des données avec un observable? Avec ces exemples, avez-vous assez d'informations ou avez-vous besoin d'un exemple très précis?

modifier:

votre this.initialized.subscribe 'démarre le processus. Vous appelez la fonction loadOtherData trop tard, ce qui vous fait pas abonné this.initialized lors du retour de données. Voilà pourquoi vous ne voyez pas console.log (« initialisé »)

Edit2:

Prenez note que BehaviorSubject détient ses données et retourne sur abonnement. Il n'est pas nécessaire de l'initialiser avec une chaîne vide.

+0

est donc là un moyen de 'subscribe' à une observable qui est déjà terminé, si j'ai une référence à l'observable/abonnement? – Gillardo

+0

Comme je l'ai dit, un BehaviorSubject renvoie ses données sur subscribe. Donc c'est un moyen possible d'y aller. – Carsten