在$ .ajax成功方法中拒绝jQuery承诺

Jas*_*son 5 javascript ajax jquery

这可能是一个愚蠢的错误,但在这里.

我需要在$ .ajax()调用的成功函数中拒绝jQuery Promise.返回值"success"是一个布尔值.

    function doSomething() {

        var myPromise = $.ajax({

            method: "POST",
                url: "/url/to/use",
                data: {"value":$("#value").val()},
                success: function(data) {
                    if (data.success == false) {
                        ConfirmMessage.showErrorMessage(data.messages[0]);
                        return new $.Deferred().reject().promise();
                    } else {
                        // do other stuff
                    }
                }
            });

            return myPromise;

        }
Run Code Online (Sandbox Code Playgroud)

稍后在then()链中使用doSomething():

doSomething().then(doSomethingElse).then(soOn).then(soForth);
Run Code Online (Sandbox Code Playgroud)

所以我需要能够拒绝承诺并打破链条.

帮助赞赏.

Ber*_*rgi 6

你不能通过success回调来做到这一点.无论如何都没有理由使用它.只需使用then:

function doSomething() {
    return $.ajax({
        method: "POST",
        url: "/url/to/use",
        data: {"value":$("#value").val()},
    }).then(function(data) {
        if (data.success == false) {
            ConfirmMessage.showErrorMessage(data.messages[0]);
            return new $.Deferred().reject().promise();
        } else {
            // do other stuff
        }
    });
}
Run Code Online (Sandbox Code Playgroud)