RESTfulサービスを複数コールしています。それぞれの呼び出しは私に結果を得ます。たとえば、次のようなオブジェクトを返します。複数のObservableを結合し、すべての結果を1つのサブスクライブで取得する方法
{
results: {
name: "Joe",
age: 10,
}
}
私は別のリクエストパラメータを持つサービスへの5種類のコールを作っています、と私は唯一、すべての5つの呼び出しが完了したとき、私のプログラムに結果を返すようにしたいとオブジェクトを返しました。私は上記のような5つのオブジェクトの配列でアプリケーションに戻りたいと思います。
Observablesで角度2でどのように行うことができますか?
これは私がちょうど早く試してみましたが、それは動作しませんなぜ私が理解することはできませんものです。
getImage(imageUrl: string) {
console.log("Fetching from " + imageUrl);
return Observable.create((o) => {
this.httpService.get(imageUrl)
.map(res => {
return res.json();
})
.map(res => res.photos.photo[0])
.subscribe((result) => {
console.log(this.generateImageUrl(result));
o.next(this.generateImageUrl(result));
});
});
}
getImages(hashtags:string[]){
var arrayOfObservables = [];
for (var hashtag in hashtags){
var url = this.flickrAPI.fetchImagesByTag + hashtags[hashtag];
var query = this.getImage(url);
arrayOfObservables.push(query);
}
console.log(arrayOfObservables);
return Observable.forkJoin(arrayOfObservables, function(){
console.log("Fork Join Done");
return "from Fork Join with love";
});
}
そして、サブスクリプションの一部がここで実際に
onSubmit() {
// First, clear FeedItems
this.feedItems = [];
var tweets$ = this.twitterService.getTweets(this.hashtagInput);
tweets$.subscribe((tweets) => {
for (var i in tweets) {
var hashtags = tweets[i].entities.hashtags;
var flicks$ = this.flickrService.getImages(hashtags);
this.subscribeToFlicks(flicks$, tweets[i]);
}
});
}
subscribeToFlicks(flicks$, tweet) {
console.log("Here");
flicks$.subscribe((results) => {
console.log("Flickr Subscription:");
console.log(results);
var twitterItem = new TwitterData(tweet.user, tweet.text);
var flickrItem = new FlickrData("null", results);
var feedItem = new FeedItem(twitterItem, flickrItem);
this.feedItems.push(feedItem);
});
}
whate "それはうまくいかない"という意味ですか?代わりにそれは何ですか? – drewmoore
@byが動作していない、何も起こっていないことを意味する – CodyBugstein