У меня есть следующий метод:
return this.http.get<any>(this.getUrl.testAPI).pipe(
map(data => {
return data.metrics.find(obj => {
return (
obj.metricName === 'PAY_EQUITY_CUSTOM' ||
obj.metricName === 'metric.' + obj.itemID + '.name'
);
});
}),
map(obj => {
return obj && obj.itemID;
}),
catchError((error: any) => throwError(error))
);
Здесь мои бизнес логики c изменились таким образом, что
if (obj.metricName === 'PAY_EQUITY_CUSTOM') then I should return obj.itemId
if (obj.metricName === 'PAY_EQUITY_SETTINGS') then I should return obj.settings
Я изменил следующим образом:
let toReturnObj = { 'settings': {}, 'itemId': ''};
return this.http.get<any>(this.payEquitySummaryUrls.payEquityMetaApi).pipe(
map(data =>{
data.metrics.filter(obj => {
if (obj.metricName === 'PAY_EQUITY_CUSTOM' || obj.metricName === 'metric.' + obj.itemID + '.name') {
toReturnObj.itemId = obj.itemId;
} else if (obj.metricName === 'PAY_EQUITY_SETTINGS') {
toReturnObj.itemId = obj;
}
});
return toReturnObj;
}),
catchError((error: any) => throwError(error))
);
Но я не хочу делать это подобно первому способу, который у меня есть, может кто-нибудь предложить мне сделать это более подходящим способом. Спасибо.