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();

問題は、で例外をスローしても、.pipe doneFilterjQueryがそれを失敗と見なすようには見えず、その結果、でキャッチされない例外が発生することdoneFilterです。

別の方法は、新しい遅延を作成し、の周りにtry-catchブロックをスローすることdoneFilterですが、それを回避するためのより良い方法があるかどうか疑問に思いました。

4

1 に答える 1

2

を使用する必要がある場合は、エラー時に, and (または何でも)throwでキャッチすることをお勧めします。次に、渡された引数で失敗コールバックが呼び出されます。doneFilterreturn $.Deferred().reject('a')then

于 2012-01-10T06:24:26.973 に答える