如何将变量引用传递给Observable订阅
How to pass variable reference to Observable subscription
我正在尝试从Twitter获取推文,然后从这些推文中获取标签,并从Flickr中获取图像。
我希望推特和图片能够结合在一起。但是,请参阅最后的控制台日志。我预计第一个将输出当前推文,第二个将输出为该推文检索到的图像。
然而,发生的情况是,console.log(tweets[i])
总是打印出列表中的最后一条推文,而console.log(results)
打印当前结果(即,打印每个flickr结果)。
顺便说一句,目前正在从json文件中检索tweet和flick。
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);
});
}
}
});
因此,我的问题是,如何使$flicks.subscribe
中的tweets[i]
引用创建订阅时正在使用的i
?
我想这是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);
}
基本上,在您的示例中,嵌套订阅是在第一个循环完成后执行的。
相关文章:
- 如何知道使用socket.io订阅/取消订阅频道
- 基于订阅的nosql内存数据库
- RxjsObservable:通过一个API调用订阅不同的值
- http/rxjs catch回调中的Angular 2重定向导致TypeError:无法读取属性'订阅'
- Knockout observable没有观察到其中一个属性
- 订阅一个具有角度的websocket的连续数据
- 为什么当订阅两次rx 2.3中的observable时,第二次订阅没有收到任何值
- 如何将变量引用传递给Observable订阅
- 订阅 Rx.Observable from 字符串不处理值赋值
- 订阅“;beforeChange”;依赖关系Observable会创建不需要的依赖关系
- 更改observable的observable属性会触发对父对象的订阅
- RxJS Observable:在最后一个订阅被清除时执行清理
- 为rx.js observable缓冲多个订阅者
- 在observable订阅上运行函数
- 如何创建一个只在它有订阅者时触发的Observable,并立即向新的订阅者提供最新的值
- RxJs -(为什么)Observable在新订阅时发出它的最新值吗?
- 使用的处方.带有pause的事件的Observable不会运行订阅函数
- 从未调用对Observable.forkJoin的订阅
- 用observable - angular2向所有订阅元素发送数据
- 如何在observableArray中订阅observable