Обещание AngularJs выполняется тогда при неудаче - PullRequest
0 голосов
/ 30 января 2019

У меня есть следующий код:

CaseFolderResource
 .exportByCaseId()
 .getWithGenericResponse(
    {caseId : request.caseId}, 
    function (result) {
      console.log(result);
      console.log('in 4')
    }, 
    ErrorHandler.handleError
  )
 .$promise
 .then(
   function (success) {
     console.log(success);
     console.log('in 2');
     console.log('success');

     CaseFolderResource
     .getByCaseId()
     .getWithGenericResponse(
       {caseId : request.caseId}, 
       function (result) {
         console.log('nested call');
         console.log(result);
       }
     );
   },  
   ErrorHandler.handleError
 );

В console log я вижу in, затем in 2, а затем success, даже на выходе был сбой, так что в журналах обещаний: data сsuccess:false.

Я получаю HTTP 500 по первому и второму обещанию.

Редактировать:

getWithGenericResponse это:

        getWithGenericResponse: {
            method: 'GET',
            interceptor: genericResponseInterceptor,
            headers: {
                'Authorization': function () {
                    return AuthHolder.getAuthData();
                },
                'X-Company': function(){
                    return getCompany();
                }
            }
        },

genericResponseInterceptor:

var genericResponseInterceptor = {
    response: function (data) {
        var response = data.data;
        console.log(response);
        if (data.status === 401 || data.status === 403) {
            reject();
        } else if (!response.success && response.errors !== undefined && response.errors !== null) {
            response.errors.forEach(function (error) {
                console.log(error.code);
                if (error.message) {
                    ToasterService.showTranslatedWarningToasterInstant(error.message);
                } else {
                    ToasterService.showTranslatedWarningToaster('error.' + error.code, {params: error.args});
                }
            });
        }
        return response;
    },
    responseError: function (data) {
        if (data.status === 401) {
            reject();
        } else if (data.status === 403) {
            ToasterService.showTranslatedErrorToaster('error.message.403');
        } else {
            ToasterService.showTranslatedErrorToaster('error.message.default');
        }
        return data;
    }
};

Даже если я удаляю: ,ErrorHandler.handleError из первого запроса - результат такой же, как описано выше.

Редактировать:

Я могу решить это с помощью if (response.data.success):

CaseFolderResource.exportByCaseId().getWithGenericResponse({caseId : request.caseId}).$promise
                    .then(function (response) {
                        console.log(response.data);
                        console.log(response.success);
                        if (response.data.success) {
                            console.log('in 2');
                            console.log('success');
                            CaseFolderResource.getByCaseId().getWithGenericResponse({caseId : request.caseId}, function (result) {
                                console.log('nested call');
                                console.log(result);
                            });
                        }
                        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...