2

我的代码看起来有点像这样(当然不那么荒谬):

var d = $.Deferred();
d.pipe(function() {
    throw "a";
}).then(function() {
    console.log("good!");
}, function(e) {
    console.log("I want the exception here");
});
d.resolve();

问题是在 a 中抛出异常.pipe doneFilter似乎不会让 jQuery 将其视为失败,它会导致doneFilter.

另一种方法是创建一个新的 deferred 并在 周围抛出一个 try-catch 块doneFilter,但我想知道是否有更好的方法来解决它。

4

1 回答 1

2

如果您必须使用throw,最好在错误时将其捕获在doneFilter, 和return $.Deferred().reject('a')(或其他)中。then然后将使用您传递的参数调用失败回调。

于 2012-01-10T06:24:26.973 回答