pipe()に第二引数を指定しなければfailコールバックは登録されないので、reject()されたときにcommonFailHandler(以下CFH)が呼ばれるはずであるが、以下のようなコードで呼ばれない。
// CFHは設定済み
var dfd = h5.async.deferred();
dfd.pipe(); // 引数なしなのでfailコールバックは登録していない扱いのはず
dfd.reject();
// CFHが呼ばれない
原因は、jQuery.deferredのfailをFW側で差し替えており、その状態でpipe()を呼ぶと、pipe()の引数に関わらずjQuery内部から差し替えた方のfailが呼ばれる。よってfailコールバックが登録された扱いになってCFHが呼ばれなくなる。
そのため、jQueryのもともとのpipeを呼ぶ前に、fail(その他差し替えた関数)をもともとの関数に戻し、pipeの処理が終わったら、差し替えた関数を元に戻す、というような動作にする。
そうすればjQuery内部から差し替えた関数を使用されることは無くなる。
pipe()に第二引数を指定しなければfailコールバックは登録されないので、reject()されたときにcommonFailHandler(以下CFH)が呼ばれるはずであるが、以下のようなコードで呼ばれない。
原因は、jQuery.deferredのfailをFW側で差し替えており、その状態でpipe()を呼ぶと、pipe()の引数に関わらずjQuery内部から差し替えた方のfailが呼ばれる。よってfailコールバックが登録された扱いになってCFHが呼ばれなくなる。
そのため、jQueryのもともとのpipeを呼ぶ前に、fail(その他差し替えた関数)をもともとの関数に戻し、pipeの処理が終わったら、差し替えた関数を元に戻す、というような動作にする。
そうすればjQuery内部から差し替えた関数を使用されることは無くなる。