サーバから返された応答を受け取り、何かに変換することを意図した関数fancyParse
があるとします。この関数は、応答が何も意味を持たない場合、または特別な「内部エラー」フラグが設定されている場合にスローします。jQueryのajaxリクエストの結果を後処理する最も簡単な方法は?
この機能を$.post
コールにチェーンして、新しいDeferred
を取得したいとします。この新しい遅延は、要求が失敗した場合、またはfancyParse
がスローした場合に失敗します。要求が成功し、fancyParse
が成功すれば成功し、重要なことは、fancyParse
の結果を成功のコールバックに渡すことです。
完璧なソリューションは、このようなものになります。
$.post('/url', etc).postprocess(fancyParse)
.done(my_done_handler)
.fail(my_fail_handler);
はすでに利用可能な、このようなものですか、私はそのようなpostprocess
を自分で書く必要があるのですか?
を、おそらくあなたが知っています要求は失敗として扱われますか? –
申し訳ありませんが、わかりません。しかし、例外をキャッチして、ポストプロセッサー内からエラーハンドラーを呼び出すのはなぜですか? – jbasko
エラーハンドラを呼び出すよりも多くのことがあるので。私は 'Deferred'も* rejected *にする必要がありますので、後で追加されたエラーハンドラも呼び出されます。 –