RxJs从其他observale的结果创建observable

时间:2016-06-14 22:02:18

标签: rxjs observable

    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

1 个答案:

答案 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');});