2016-06-14 64 views
0
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從其他觀測值的結果創建可觀測值

回答

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

謝謝!第二個選項對我很好!我用鼠標懸停彈出細節的方法 –