私は$.ajax
と約束しています。私の(構文的に有効な)応答にエラーが含まれているかどうかをチェックし、その場合に拒否ステータスをトリガーします。jQueryの遅延オブジェクトにエラーを投げる
私はこのようなタスクを簡単に処理する私の約束のライブラリを使用しています。私は実際にjQueryのPromise(cache)の実装がDeferred
objectであるとは思わないし、めったに使用しないので、何か見落としている可能性があります。
return $.ajax(...).then(function success(response) {
var problem = hasError(response);
if (problem) {
var error = new $.Deferred;
error.reject(problem);
return error;
} else
return response;
});
これは、応答でネットワークエラーや問題が発生した場合には拒否された約束を返す必要があります:私は進むべき道はただ複雑であるように思われ、.then()
を使用していると思います。しかし、拒否された延期は本当に[最善の|最短の]道を行くのですか?
私はまた、このような「エラーを投げるレスポンスハンドラ」をajaxのオプションで処理する方法について助言してくれると思います。
免責事項:いいえ、私はサーバーの応答を変更できません。問題検出方式は同期方式です。私は他のライブラリを使いたくないので、特にjQueryがこれを解決する方法に興味があります。
OK:
は、その後、これを消費するものは何でも、呼び出し元のコードにこの新しい約束を返すことができますjQuery :-( – Bergi
Jquery 1.8 pipe === then – Plynx
ありがとうございました彼らは少なくとも固定されています – Bergi