2016-06-11 53 views
2

我还在学习RXJS(刚开始),我知道我的问题是首发。我正试图结合来自外部电话的两个响应。假设我做了call1和call2,我应该可以订阅一个联合响应。在RXJS中结合两个ajax响应

下面是我的代码

var arrayWeather =['http://apidev.accuweather.com/currentconditions/v1/250111.json?language=en&apikey=hoArfRosT1215', 'http://apidev.accuweather.com/currentconditions/v1/4-204108_1_AL.json?language=en&apikey=hoArfRosT1215']; 
var refreshClickStream = Rx.Observable.fromEvent(document.querySelector('.refresh'), 'click'); 

refreshClickStream.subscribe(function(e){ 
    Rx.Observable.fromArray(arrayWeather) 
    .flatMap(function(datathings){ 
     return Rx.DOM.Request.get(datathings) 
    }) 
    .subscribe(function(data){ 
     console.log(data.response); 
    }); 
}); 

回答

1

你需要一个Zip

var combined = Rx.Observable.zip(refreshClickStream, anotherStream); 

然后订阅合并

var subscription = combined.subscribe(
    function (x) { 
    }, 
    function (err) { 
    }, 
    function() { 
    }); 

您还可以添加一个功能Zip,你能告诉zip操作如何结合两个

var combined = Rx.Observable.zip(refreshClickStream, anotherStream, function (firstStreamItem, secondStreamItem) { 
    return { first: firstStreamItem, second: secondStreamItem }; 
    }); 

有关RxJS邮编的详细信息,see here