2016-04-01 5 views
0

Ich versuche, Tweets von Twitter zu bekommen, und dann die Hashtags von diesen Tweets und erhalten Bilder von Flickr.Wie Variable Verweis auf Observable-Abonnement übergeben

Ich möchte die Tweets und Bilder miteinander vereint werden. Siehe jedoch die Konsolenprotokolle am Ende. Ich erwarte, dass der erste den aktuellen Tweet ausgibt und der zweite die für diesen Tweet abgerufenen Bilder ausgibt.

Was jedoch passiert, ist, dass console.log(tweets[i]) immer den letzten Tweet in der Liste ausgibt, während console.log(results) die aktuellen Ergebnisse druckt (d. H. Jedes Flickr-Ergebnis wird gedruckt).

Übrigens werden die Tweets und Flicks vorerst aus einer JSON-Datei abgerufen.

tweets$.subscribe((tweets) => { 
      for (var i in tweets) { 
       var hashtags = tweets[i].entities.hashtags; 
       for (var j in hashtags) { 
        var flicks$ = this.flickrService.getImagesMock(hashtag[j]); 
        flicks$.subscribe((results) => { 
         console.log(tweets[i]); 
         console.log(results); 
        }); 
       } 
      } 
     }); 

Also meine Frage ist, wie bekomme ich die tweets[i] im $flicks.subscribe zum i beziehen, die in Gebrauch war, als das Abonnement erstellt wurde?

Antwort

1

Ich denke, es ist ein klassisches Problem mit Bereich in async js.

Grundsätzlich wird in Ihrem Beispiel geschachtelte Subskription ausgeführt, nachdem die erste Schleife bereits beendet ist.

Verwandte Themen