New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deferred.pipe()を呼ぶとfailコールバックを登録しなくても、commonFailHandlerが呼ばれない #210

Closed
fukudayasuo opened this Issue May 29, 2013 · 1 comment

Comments

Projects
None yet
2 participants
@fukudayasuo

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内部から差し替えた関数を使用されることは無くなる。

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 29, 2013

@ghost ghost assigned fukudayasuo May 29, 2013

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 29, 2013

@fukudayasuo

This comment has been minimized.

Show comment
Hide comment
@fukudayasuo

fukudayasuo May 29, 2013

jQueryオリジナルの関数を呼ぶためのメソッド__fwInternalCallをpromise/deferred下に置くようにしました。

promise.__fwInternalCall('fail', function(){});
promise.__fwInternalCall('then', function(){}, function(){}, function(){});

FW内部からの使用を想定しており、コールバックを登録してもCFHを発火するかどうかには影響させたくない場合に使用します。

jQueryオリジナルの関数を呼ぶためのメソッド__fwInternalCallをpromise/deferred下に置くようにしました。

promise.__fwInternalCall('fail', function(){});
promise.__fwInternalCall('then', function(){}, function(){}, function(){});

FW内部からの使用を想定しており、コールバックを登録してもCFHを発火するかどうかには影響させたくない場合に使用します。

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 29, 2013

simdy added a commit to hifive-labs/hifivemain that referenced this issue May 31, 2013

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 31, 2013

fukudayasuo pushed a commit to hifive-labs/hifivemain that referenced this issue May 31, 2013

@simdy simdy closed this Jun 4, 2013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment