I have a working API to get items from the server as below. I am using React to use this data. Now, I want to catch all server errors that begins with 5__ and display a message like "No connection with internet" or something like that.
export const GetItems = (operand, searchValue) => {
const trimmedValue = searchValue.trim();
let binedResults;
// make 2 API calls to search on both item_name and code;
// then bine them;
// there is no API method to do this, that I could find
return getItemsByName(operand, trimmedValue)
.then(result => (
(binedResults = [].concat(result))
))
.then(() => getItemsByCode(operand, trimmedValue))
.then(result => (
(binedResults = binedResults.concat(result))
));
};
Currently, I need to look at the console to check if there is a problem with connection.
Updated as @Dane requested
const getItemsByCode = (operand, searchValue) => (
FetchToJson(BuildCodeSearchUrl(operand, searchValue))
);
It's just calling a method to build the URL. You can consider that everything is working good, getting the response if there is a connection.
I have a working API to get items from the server as below. I am using React to use this data. Now, I want to catch all server errors that begins with 5__ and display a message like "No connection with internet" or something like that.
export const GetItems = (operand, searchValue) => {
const trimmedValue = searchValue.trim();
let binedResults;
// make 2 API calls to search on both item_name and code;
// then bine them;
// there is no API method to do this, that I could find
return getItemsByName(operand, trimmedValue)
.then(result => (
(binedResults = [].concat(result))
))
.then(() => getItemsByCode(operand, trimmedValue))
.then(result => (
(binedResults = binedResults.concat(result))
));
};
Currently, I need to look at the console to check if there is a problem with connection.
Updated as @Dane requested
const getItemsByCode = (operand, searchValue) => (
FetchToJson(BuildCodeSearchUrl(operand, searchValue))
);
It's just calling a method to build the URL. You can consider that everything is working good, getting the response if there is a connection.
Share Improve this question edited Nov 27, 2017 at 6:54 psuresh asked Nov 27, 2017 at 6:08 psureshpsuresh 5842 gold badges14 silver badges27 bronze badges 2-
Can you please add the code for
getItemsByCode
as well ? – Dane Commented Nov 27, 2017 at 6:45 - wat http library are you using ? – Panther Commented Nov 27, 2017 at 7:39
1 Answer
Reset to default 4Use catch()
:
return getItemsByName(operand, trimmedValue)
.then(result => (
(binedResults = [].concat(result))
))
.then(() => getItemsByCode(operand, trimmedValue))
.then(result => (
(binedResults = binedResults.concat(result))
))
.catch((error) => {
if (error.response) { // if there is response, it means its not a 50x, but 4xx
} else { // gets activated on 50x errors, since no response from server
// do whatever you want here :)
}
});