Обещание не отклоняется при передаче сообщения об ошибке в Deferred.reject () - PullRequest
1 голос
/ 24 марта 2020

У меня есть JavaScript функция с асинхронным вызовом для проверки выбранного параметра в форме. Когда я передаю сообщение в вызов reject (), оно фактически не отклоняет обещание. Когда я удаляю параметр сообщения, он работает как положено.

function myValidationCallback(statusId) {
    var d = $.Deferred();
    $.ajax({
        url: "/ServersideValidationCall?statusId=" + statusId,
        method: "POST",
        dataType: "json",
        contentType: "application/json"
    }).done(function (res) {
        if(res.IsValid)
            d.resolve()
        else
            d.reject(res.Message); // If res.Message is removed, the reject works.
    }).fail(function (error) {
        console.error("Server-side validation error", error);

        d.reject("Cannot contact validation server");
    });

    return d.promise();
}

Из 1013 * отложенной документации и этого примера проверки, похоже deferred.reject может принимать сообщение в качестве аргумента.

Редактировать: функция обратного вызова проверки является правилом проверки в этом поле выбора DevExtreme:

$.ajax({
        url: "/GetStatuses",
        dataType: 'json',
        cache: false,
        success: function (data) {
            $("#statusId").dxSelectBox().dxValidator({
                validationRules: [{
                    type: "async",
                    validationCallback: function (params) {
                        return myValidationCallback(params.value)
                    }
                }],
                validationGroup: ValidationGroup
            });
        },
        error: function (jqXHR, textStatus, errorThrown) {
            givePersistentFeedback("detailsExceptionFeedback", "danger", getExceptionError(jqXHR));
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...