📜  jQuery deferred.rejectWith() 方法(1)

📅  最后修改于: 2023-12-03 15:02:09.568000             🧑  作者: Mango

jQuery deferred.rejectWith() 方法

deferred.rejectWith() 方法是 jQuery 中 Deferred 对象的一个方法,该方法用于将 Deferred 对象的状态设置为“rejected”(即失败),并将失败的值传递给任何附加的错误处理函数。

语法

deferred.rejectWith(context, args)

  • context:可选参数。指定回调函数执行时的上下文对象(即 this 值)。
  • args:可选参数。传递给回调函数的参数数组。
返回值

返回 Deferred 对象本身,以便支持链式调用。

示例
var loading = $.Deferred();

$('#loading').on('click', function() {
    $.get('example.php')
        .done(function(response) {
            loading.resolve(response);
        })
        .fail(function() {
            loading.rejectWith(this, arguments);
        });
});

loading
    .progress(function(msg) {
        console.log('状态更新:' + msg);
    })
    .done(function(response) {
        console.log('成功返回数据:' + response);
    })
    .fail(function() {
        console.log('出错了:' + this.statusText);
    })
    .always(function() {
        console.log('加载完成!');
    });

在上面的示例中,我们首先创建了一个 Deferred 对象 loading,然后在用户点击“加载”按钮时,向后端发起了一个 AJAX 请求。如果请求成功,则使用 loading.resolve() 方法将 Deferred 对象的状态设置为“resolved”(即成功)并将成功的值传递给任何附加的成功处理函数;如果请求失败,则使用 loading.rejectWith() 方法将 Deferred 对象的状态设置为“rejected”(即失败)并将失败的值传递给任何附加的错误处理函数。最后,我们使用 loading.progress()、loading.done()、loading.fail() 和 loading.always() 方法分别处理 Deferred 对象的“进度更新”、“成功完成”、“失败完成”和“无论成功或失败都完成”的状态。

总结

deferred.rejectWith() 方法是 jQuery 中 Deferred 对象的一个方法,用于将 Deferred 对象的状态设置为“rejected”(即失败),并将失败的值传递给任何附加的错误处理函数。它的语法简单,返回值为 Deferred 对象本身,支持链式调用。开发者可以根据具体的应用场景,选择合适的方法来进行状态控制。