【发布时间】:2014-10-24 05:47:19
【问题描述】:
我正在使用 JQuery 的 $.when 和 $.get 来获取一些数据并对其进行处理。当获取它或使用它做某事发生错误时,我想处理该错误,并根据我正在获取的数据/在哪个路径获取它以不同方式处理它。
很遗憾,传递给$.when().fail(...) 的信息很少,并且不包括该信息。我怎样才能以一种非 hacky[1] 的方式从可延迟的对象中冒泡这些信息?
$.when(get(path1), get(path2)
.done(function(parsed1, parsed2) {
// do something with this date
}).fail(function(jqXHR, statusTxt, errTxt) {
// do something depending on which path failed...
});
function get(path) {
var parser = U.parser();
return $.get('/getter' + path)
.then(function(data) {
return parser(data);
});
}
[1]:当然,我可以关闭路径和一些我想要处理失败的全局对象,并在 $.get 返回的 Deferred 上的 .fail() 中处理它。我也可以传递一个没有失败但以某种方式包装失败的 Deferred ,但这也感觉很hacky。
【问题讨论】:
-
vcfPath是唯一的“路径”吗? -
那么您将在
statusTxt和errText中获得详细信息,如果客户端或请求存在问题,但如果存在服务器错误,那么显然该信息不能通过这些参数很容易得到。 -
@guest271314 是的,它是(编辑为
path)。 -
@Isaac 可以将
path附加到beforeSend处的jqxhr对象,然后在.fail()处解析jqxhr以获取特定路径;为特定路径做事。 -
@Isaac 见帖子。谢谢