мой вопрос похож на этот Как сгенерировать ошибку из оператора карты RxJS (угловая) , но я на angular6 с rxjs6 и, думаю, все изменилось;)
Я хочу знать, как я могу распространять объект Error внутри карты наблюдаемой части подписки OnError. Я всегда заканчиваю в Части OnNext.
Вот что у меня есть:
Внутри ng-компонента у меня может быть следующий вызов метода
[...]
this.dataStreamService.execCall({ method : 'order_list',params : {}})
.subscribe( r => {
// here r provides the result data from http call
console.log("execCall result", r);
}, err => {
// HERE the "MAP ERROR OCCURED" Error should be occured as well,
// but in doesn't
console.log("execCall error",err);
});
[...]
Метод вызываемого сервиса выглядит так:
execCall(dataStreamCall: DataStreamCall): Observable<DataStreamResult> {
let apiURL = '<some API-URL>';
let params = dataStreamCall.params;
// do HTTP request (this.http calls an extra service handler which wraps
// the angular httpClient and the API errors there
// There is NO Problem with that part :)
let apiResult = this.http.post(apiURL, params);
// Build a new Observable from type "DataStreamResult"
let dsr : Observable<DataStreamResult> = apiResult
.pipe(
map( httpresult => {
if (httpresult['status'] == false){
// the http call was basically successful,
// but state in data is false
// *** THIS IS NOT PROPAGATE TO SUBSCRIBE OnERROR ***
throwError({'msg' : 'MAP ERROR OCCURED'});
// also tried as alternative
return throwError({'msg' : 'MAP ERROR OCCURED'});
} else {
// here the http call was successful
let d = new DataStreamResult();
d.result = httpresult;
return d;
}
}),
catchError( err => {
// error is bubble up from http request handler
return throwError(err);
})
);
return dsr;
}
Наконец вопрос:
Как можно сделать так, чтобы «throwError» в переданной по трубопроводу «карте» распространялось для подписки «err => {...}».
Фактическое поведение для:
throwError({..})
Я попал в подписку OnNext Part с r = undefined
Если я использую:
return throwError({..})
Я также попал в подписную часть OnNext, где r
- throwError-Observable
Спасибо заранее
С наилучшими пожеланиями