あるJQuery.Deferred()オブジェクトのすべてのイベントを別のオブジェクトに伝播するにはどうすればよいですか?
.fail
両方を処理し、他のオブジェクトを呼び出すことによって、より良い/より単純な/より短い方法はありますか?Rejectまたはresolveを呼び出すと呼び出されるので、処理する必要はないと想定しています。.then
.done
.rejectWith
.resolveWith
.done
.then
多分これはを使ってできるので.pipe
はないかと思いますが、どうすればいいのかわかりません。
アップデート:
注:@FrédéricHamidiのコメントに従って、上記のテキストの一部も修正しました。
私が達成しようとしていることは次のとおりです。
サーバーに対してajax呼び出しを行うAPIがあり、それらはajaxオブジェクト($ .Deferred自体)を返します。
ある時点で、ネットワークが利用できない状況に対処する必要がありました(これは、モバイルデバイスで実行されているphonegapアプリケーション用です)。
私がやりたかったのは、ネットワーク接続がない場合に、ユーザーにネットワークの問題を修正して「再試行」を押すように求めるダイアログを表示することでした。
ただし、このシナリオでは、ユーザーが再試行を押すまで$ .ajaxを呼び出さないため、最初にAPIを呼び出した関数を返す$.Defferredオブジェクトがありませんでした。
そのため、新しい$ .Defferredを作成して返すことができ、再試行ボタンのコールバックで$ .ajax自体を呼び出して、defferredイベントを「リレー」/転送するように設定することができました。閉鎖の一部としてそれを穴あけする。
しかし、私はそれを行う方法がわかりませんでした。メソッドとの私の取り違え.pipe
は、その説明が次のように言っているためです。
遅延をフィルタリングおよび/またはチェーンするためのユーティリティメソッド。
私はこれが私の質問をより明確にすることを願っています。