어떤 전문가가이 문제를 해결할 수 있다면이 문제를 어떻게 해결할 수 있을지 잘 모르겠습니다. 나의 현재 이해는 관찰 할 수있는 것이 게으르며 구독 할 때까지 값을 산출하지 않는다는 것이다. 오류가 발생하면 관찰 대상은 더 이상 값을 보내지 않습니다. 많은 경우에 이것은 원하는 것이 아닙니다.RxJs 종료 처리가없는 예외 처리
아래 코드 샘플에서는 perth 및 london의 날씨가 표시되고 오류가 발생했음을 나타내는 개체가 반환되면 오류가 발생했습니다. 이것은 꽤 많이 구독자의 오류 블록이 호출되지 않을 것이라는 것을 의미하지만 성공 여부는 실패했는지 여부와 논리를 변경해야 하는지를 검토해야합니다. 이것이 이것을하는 가장 좋은 방법입니까?
zip 연산자는 모든 obs가 하나의 값이 생성되었을 때 순서에 관계없이 값을 생성 할 때까지 기다리고 있습니까? 아래
코드 :
window.application = application || {};
window.application.stocks = (function(){
function getWeather(city, country){
return $.ajaxAsObservable({
url: 'http://api.openweathermap.org/data/2.5/weather?q=' + city + ',' + country,
dataType: 'jsonp'
}).map(function(v){
return {
city : city,
country : country,
temperature : v.data.main.temp
};
});
}
var requests = Rx.Observable
.interval(500)
.timestamp()
.map(function(v){
var perth = getWeather('perth','au');
var london = getWeather('london','uk');
return Rx.Observable.zip(perth,london, function(a,b){
return {
a : a,
b : b,
timestamp : v.timestamp,
failure : false,
};
}).retry(3)
.catch(Rx.Observable.return({ failure: true }));
})
.concatAll();
var selector = $('#weather');
var subscriber = requests.forEach(
function(data){
if(data.failure){
$('<li>Failure in receiving the temperature</li>').appendTo(selector);
return;
}
$('<li> at: ' + data.timestamp + ' for: ' + data.a.city + ' - ' + data.a.temperature + '</li>').appendTo(selector);
$('<li> at: ' + data.timestamp + ' for: ' + data.b.city + ' - ' + data.b.temperature + '</li>').appendTo(selector);
},
function(error){
selector.text('');
$('<li>Error: ' + error + '</li>').appendTo('#weather');
},
function(){
}
);
});
어떤 제안과 조언이 크게 감사합니다.
미리 감사드립니다.
블레어.
이것은 반드시 질문에 대한 대답을 제공하지 않습니다. 좋은 통찰력이 있지만 의견으로 게시해야합니다. 충분한 평판을 얻을 때 질문, 답변 및 기타 게시물에 대한 의견을 남길 수 있지만 그때까지는 다른 질문으로 질문에 대답하지 마십시오. –