Как отправить ответ в коллбэк - PullRequest
1 голос
/ 15 апреля 2020

Я довольно новичок в получении API и не могу понять, почему я могу получить доступ к ответу. json () локально, но не один раз развернуто.

РЕДАКТИРОВАТЬ: Просто сделать вопрос яснее. Когда мой ответ НЕ в порядке, я хочу отправить ответ. json () в мою функцию errorCallBack. Это работает локально, и я установил свое сообщение об ошибке «MyException». Однако при развертывании в новой среде параметр, полученный errorCallBack, представляет собой Promise со статусом «Ожидание», и перехват в функции errorCallBack срабатывает.

Fetch:

    fetch(request)
        .then(response => {
            if (!response.ok) {
                errorCallBack(response.json());
                return;
            }
            successCallBack();
        })
        .catch(error => {
            console.log(error.message);
            errorCallBack();
        });

Ошибка обратного вызова:

    errorCallBack = (jsonResponse) => {
        jsonResponse
            .then(data => {
                if (data) {
                    if (data.MyException) {
                        this.setErrorMessage("MyException");
                        return;
                    }
                }
            })
            .catch(() => {
                this.setErrorMessage("");
            });
    }

1 Ответ

0 голосов
/ 15 апреля 2020

Некоторые изменения. ответ. json () может завершиться ошибкой, если вы возвращаете пустой ответ, но вы можете добавить туда свои логики c.

 fetch(request)
        .then(response => {
            if (!response.ok) {
                console.log(response.status) // Error code
                console.log(response.statusText); // Error message
                return errorCallBack(response.json()); // return response Promise
            }

            return successCallBack(response.json()); // This will return a Promise
        })
        .catch(error => {     
            console.log(error); // Log any error
            errorCallBack(error); // return an error object
        });

handle Обрабатывать

errorCallBack = (response) => {

   response
   .then(jsonData => {

      if(jsonData.myException) {
         ...
      } else{
         ...
      }

   })
   .catch(error => {
      console.log(error)
      ...
   })
}
...