admin管理员组

文章数量:1025202

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
Add a ment  | 

1 Answer 1

Reset to default 4

Use 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 :)
        }            
      });

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
Add a ment  | 

1 Answer 1

Reset to default 4

Use 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 :)
        }            
      });

本文标签: reactjsCatch 504 (Gateway Timeout) Error in ReactJavaScriptStack Overflow