RxJs从其他观测值的结果创建可观测值
问题描述:
var quakes = Rx.Observable.interval(5000).flatMap(function() {
return Rx.DOM.jsonpRequest({
url: QUAKE_URL,
jsonpCallback: 'eqfeed_callback'
}).retry(3);
})
.flatMap(function(result) {
return Rx.Observable.from(result.response.features);
})
.distinct(function(quake) {
return quake.properties.code;
});
quakes.subscribe(function(quake) {
var coords = quake.geometry.coordinates;
var size = quake.properties.mag * 10000;
console.log(1);
L.circle([coords[1], coords[0]], size).addTo(map);
});
我想从地震的结果创建观测值,我怎么能得到这个?我没有找到任何方法,只有创建空的观察到的,cocan与现有的地震RxJs从其他观测值的结果创建可观测值
答
因为我不明白,在全深度的问题的想法,我只能给你一些提示:
选项1。如果您想对结果做不同的事情,您可以在quakes
多次订阅。
选项2.而不是订阅和记录结果,您可以map
而不是订阅新的结果,例如,
var quakesResult = quakes.map(function(quake) {
var coords = quake.geometry.coordinates;
var size = quake.properties.mag * 10000;
console.log(1);
return L.circle([coords[1], coords[0]], size);
});
quakesResult.subscribe(...);
选项3.您可以使用Subject
通知您,当您加入圈子在你的订阅方法,例如
var mySubject = new Rx.Subject();
quakes.subscribe(function(quake) {
var coords = quake.geometry.coordinates;
var size = quake.properties.mag * 10000;
console.log(1);
L.circle([coords[1], coords[0]], size).addTo(map);
mySubject.onNext();
});
mySubject.subscribe(function() { console.log('was added');});
谢谢!第二个选项对我很好!我用鼠标悬停弹出细节的方法 –