2016-06-14 4 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); 
}); 

Ich möchte aus dem Ergebnis der Beben Observable erstellen, wie kann ich das bekommen? Ich habe keine Methode finden, nur Ahnung von leeren beobachtbar und Cocan Erstellung mit vorhandenen bebenRxJs erstellen beobachtbar aus dem Ergebnis anderer Beobachtungen

Antwort

2

Da ich die Frage in voller Tiefe nicht verstehe, kann ich Ihnen nur einige Hinweise geben:

Option 1. Sie können mehrere Male unter quakes abonnieren, wenn Sie mit dem Ergebnis etwas anderes machen wollen.

Option 2. Anstatt das Ergebnis zu abonnieren und zu protokollieren, können Sie stattdessen map es und abonnieren Sie das neue Ergebnis, z.

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(...); 

Option 3. Sie können eine Subject verwenden Sie zu benachrichtigen, wenn Sie den Kreis in Ihrer Methode abonnieren hinzugefügt, z.B.

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

danke! zweite Optionen für mich! Ich write Hover-Methode für Popup-Details –

Verwandte Themen