我正在尝试从Twitter获取推文,然后从这些推文中获取主题标签并从Flickr获取图像。
我希望推文和图片结合在一起。但是,请参阅最后的控制台日志。我希望第一个将输出当前的推文,第二个将输出为此推文检索的图像。
然而,会发生的事情是console.log(tweets[i])
始终打印出列表中的最后一条推文,而console.log(results)
打印当前结果(即打印每个flickr结果)。
顺便说一句,现在正在从json文件中检索推文和电影。
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);
});
}
}
});
所以我的问题是,如何让tweets[i]
中的$flicks.subscribe
引用创建订阅时使用的i
?
答案 0 :(得分:1)
我想这是async js中范围的一个类似问题。
for (var i in tweets) {
(function(index) {
var hashtags = tweets[index].entities.hashtags;
for (var j in hashtags) {
var flicks$ = this.flickrService.getImagesMock(hashtag[j]);
flicks$.subscribe((results) => {
console.log(tweets[index]);
console.log(results);
});
}
})(i);
}
基本上,在您的示例中,嵌套的subscribe在第一个循环已经完成后执行。