【发布时间】:2013-04-02 06:36:10
【问题描述】:
在 jQuery AJAX 调用中是否存在“终于”类似的 Java?我这里有这段代码。在我的 always 中,我抛出了一个异常,但我总是希望它转到 then() 方法。
call.xmlHttpReq = $.ajax({
url : url,
dataType : 'json',
type : 'GET'
}).always(function(processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {
throw "something";
}).then(function() {
alert("i want to always run no matter what");
});
我曾尝试使用 done()、complete() 和另一个 always(),但似乎没有任何效果。
这里是 JSFiddle:
【问题讨论】:
-
只需将其附加到
always... -
您无法捕获异步抛出的错误,这正是您要寻找的。您需要自己将其包装到
try-catch-finally语句中。 -
它 Always 转到 always() 函数,这就是它如此恰当命名的原因。
-
除非 jQuery 处理回调中的每个 try/catch,否则
throw "something";将简单地停止代码执行。 -
@Bergi,我不熟悉 jQuery 的 Promise impl,但如果它符合 Promises/A+,那么抛出的错误将被传递给传递给 then 的 errorHandler。因此,如果他将第二个函数传递给 then,那将接收“某物”作为参数。
标签: javascript jquery ajax promise