IT박스

내부에서 약속을 거부하고 기능하는 방법

itboxs 2020. 10. 15. 07:37
반응형

내부에서 약속을 거부하고 기능하는 방법


이것은 아마도 어리석은 질문 일 것입니다. 그러나 중간 약속 체인, then 함수 중 하나에서 약속을 어떻게 거부합니까? 예를 들면 :

someActionThatReturnsAPromise()
    .then(function(resource) {
        return modifyResource(resource)
    })
    .then(function(modifiedResource) {
        if (!isValid(modifiedResource)) {
            var validationError = getValidationError(modifiedResource);
            // fail promise with validationError
        }
    })
    .catch(function() {
        // oh noes
    });

더 이상 원래 해결 / 거부 함수 또는 PromiseResolver에 대한 참조가 없습니다. 추가하면 return Promise.reject(validationError);되나요?


추가하면 return Promise.reject(validationError);되나요?

예. 그러나 Promise / A + 호환 라이브러리를 사용하면 jQuery에서만 그렇게 복잡 합니다.

throw validationError;

따라서 코드는 다음과 같습니다.

someActionThatReturnsAPromise()
    .then(modifyResource)
    .then(function(modifiedResource) {
        if (!isValid(modifiedResource))
            throw getValidationError(modifiedResource);
        // else !
        return modifiedResource;
    })
    .catch(function() {
        // oh noes
    });

참고 URL : https://stackoverflow.com/questions/21260602/how-to-reject-a-promise-from-inside-then-function

반응형