jQuery推迟:为什么这个失败的请求解决了?

时间:2014-12-10 13:28:30

标签: jquery ajax callback jquery-deferred

我有两个AJAX延迟,当两个都成功时,应该会产生成功消息。否则,如果其中一个失败,则应显示错误消息。减少代码:

var reqs = $.map(['file', 'db'], function(mode) {
    $.get(wspath(desyn.repo_id, 'revert', { mode: mode, path: path, version: ver }))
});

$.when(reqs[0], reqs[1]).then(
    function() { alert('success'); },
    function() { alert('error'); }
);

出于调试目的,我强制第一个请求失败 - 在服务器上我抛出了内部500错误。这在网络控制台中得到证实。但是,仍会执行成功回调,而不是失败回调。

据我理解(并且如jQuery docs page上的最后一个例子中所述),将两个函数传递给then()意味着第一个是成功回调,后者是失败回调。怎么了?

1 个答案:

答案 0 :(得分:2)

你应该return $.get(...实际拥有数组中的延迟对象