RxJs从其他观测值的结果创建可观测值

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');}); 
+0

谢谢!第二个选项对我很好!我用鼠标悬停弹出细节的方法 –