programing

각도에서의 오류 처리JS http get 후 구성

lastmoon 2023. 3. 28. 22:30
반응형

각도에서의 오류 처리JS http get 후 구성

AngularJS "http get then" 구성(약속)을 사용할 때 500과 같은 HTTP 오류를 어떻게 처리할 수 있습니까?

$http.get(url).then(
    function(response) {
        console.log('get',response)
    }
)

문제는 200 이외의 HTTP 응답에서는 내부 함수가 호출되지 않는다는 것입니다.

다음 파라미터를 추가해야 합니다.

$http.get(url).then(
    function(response) {
        console.log('get',response)
    },
    function(data) {
        // Handle error here
    })

다음을 사용하여 이 부분을 보다 깔끔하게 만들 수 있습니다.

$http.get(url)
    .then(function (response) {
        console.log('get',response)
    })
    .catch(function (data) {
        // Handle error here
    });

유사한 to@this.lau_ 답변으로 접근 방식이 다릅니다.

https://docs.angularjs.org/api/ng/service/$http

$http.get(url).success(successCallback).error(errorCallback);

success Callback 및 error Callback을 함수로 바꿉니다.

편집: 로랑의 대답이 더 정확합니다. 로랑의 답은then하지만 이 질문에 답할 분들을 위한 대안으로 여기 남겨두겠습니다.

서버 오류를 글로벌하게 처리하는 경우 $httpProvider에 대행 수신 서비스를 등록할 수 있습니다.

$httpProvider.interceptors.push(function ($q) {
    return {
        'responseError': function (rejection) {
            // do something on error
            if (canRecover(rejection)) {
                return responseOrNewPromise
            }
            return $q.reject(rejection);
        }
    };
});

문서: http://docs.angularjs.org/api/ng.$http

이거 드셔보세요

function sendRequest(method, url, payload, done){

        var datatype = (method === "JSONP")? "jsonp" : "json";
        $http({
                method: method,
                url: url,
                dataType: datatype,
                data: payload || {},
                cache: true,
                timeout: 1000 * 60 * 10
        }).then(
            function(res){
                done(null, res.data); // server response
            },
            function(res){
                responseHandler(res, done);
            }
        );

    }
    function responseHandler(res, done){
        switch(res.status){
            default: done(res.status + ": " + res.statusText);
        }
    }

저는 위의 내용으로 작업을 할 수 없었습니다.그럼 이게 도움이 될 수도 있겠네요

$http.get(url)
  .then(
    function(response) {
        console.log('get',response)
    }
  ).catch(
    function(response) {
    console.log('return code: ' + response.status);
    }
  )

파라미터도 참조해 주세요.

언급URL : https://stackoverflow.com/questions/17080146/error-handling-in-angularjs-http-get-then-construct

반응형