Подтвердить что ты не робот

Как отклонить обещание изнутри, тогда функция

Это, наверное, глупый вопрос, но середина обещания, как вы отвергаете обещание изнутри одной из функций? Например:

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);?

4b9b3361

Ответ 1

Я просто должен добавить return Promise.reject(validationError);?

Да. Однако это сложное только в jQuery, с библиотекой Promise/A +, которая также может просто

throw validationError;

Итак, ваш код будет выглядеть как

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