相关疑难解决方法(0)

jQuery Deferred:拒绝完成过滤器中的承诺

Fyi,我刚刚开始学习jQuery的承诺,所以我在这里可能有点困惑.

无论如何,我有一个AJAX请求,我想根据响应的内容在完成过滤器中拒绝:

return doAJAXRequest().then(function (data) {
    if (data.responseText == "YES") {
        return doOtherAJAXRequest();
    } else {
        this.reject(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

这不像我预期的那样有效:

Uncaught TypeError: Object #<Object> has no method 'reject'
Run Code Online (Sandbox Code Playgroud)

我如何根据其响应使此承诺失败?那可能吗?或者我只是对这里需要做什么感到困惑?

jquery jquery-deferred

23
推荐指数
1
解决办法
9807
查看次数

在jQuery的Deferred对象中抛出一个错误

我有一个$.ajax承诺,想检查我的(语法上有效)响应是否包含错误,在这种情况下触发被拒绝的状态.

我使用自己的诺言库来轻松处理这些任务.我真的不喜欢jQuery的Promise(缓存)实现及其Deferred对象,可能忽略了一些东西,因为我很少使用它.我认为要走的路只是使用.then(),这似乎相当复杂:

return $.ajax(...).then(function success(response) {
    var problem = hasError(response);
    if (problem) {
        var error = new $.Deferred;
        error.reject(problem);
        return error;
    } else
        return response;
});
Run Code Online (Sandbox Code Playgroud)

这应该返回一个在网络错误或响应问题时被拒绝的承诺.但是回归被拒绝的推迟真的是[唯一|最好|最短]的方式去?

我也会在ajax选项中自己如何处理这些"错误抛出响应处理程序"的帮助,我找不到关于它们的好文档.


免责声明:不,我无法更改服务器响应.问题检测方法是同步的.我不想使用其他库,我对jQuery解决这个问题的方式特别感兴趣.

javascript error-handling promise jquery-deferred

11
推荐指数
1
解决办法
1万
查看次数