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
答案 0 :(得分:2)
由于我不完全理解这个问题,我只能给你一些提示:
选项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');});