web-dev-qa-db-ja.com

カスタム関数でコールバック関数を呼び出すJquery

カスタム関数があり、それにコールバック関数を追加したいのですが、他の質問を調べましたが、問題の答えを実際に見つけることができませんでした。つまり、基本的には次のようになります。

function myfunction() {
 // something 
}

そして、コールバックとしてトリガーしたい別の関数があり、最終的には次のようにmyfunctionを呼び出したいと思います。

myfunction(callback());

だから誰かがこれを行う方法を教えてもらえますか?

9
Mr. Sam

次のように呼び出します(コールバック関数を引数として渡します)。

_ myfunction(myCallbackFn);
_

関数への参照を引数として渡す場合、関数名の後に括弧がないことに注意してください。これは関数を呼び出さず、関数への参照を渡すだけで、後でカスタム関数内から呼び出すことができます。

関数を定義して、次のようにその中でコールバック関数を呼び出します。

_function myfunction(cb) {
    cb(arg1, arg2);
}
_

カスタム関数内から実際にコールバック関数を呼び出す方法は複数あることに注意してください。普通に呼び出すだけでthis引数を気にしない場合は、次のように使用できます。

_cb();
_

this引数を何かに設定する場合は、次を使用できます。

_cb.call(thisArg, arg1, arg2);
_

現在の引数を渡すか、引数の配列を渡してthis引数を設定する場合は、次のようにします。

_cb.apply(thisArg, argArray);
_

.call() および .apply() に関する参照。


現在のコードでは、この領域にjavascriptエラーがあります。

_test(Rand_gyumolcs, link, callback){
    callback();
}; 
_

これは正当なJavaScriptではありません。あなたが何をしようとしているのかわかりませんが、これは関数宣言の半分と関数呼び出しの半分のように見えます。テスト関数を呼び出したいだけの場合は、次のように使用します。

_test(Rand_gyumolcs, link, callback);
_

テスト内で、アニメーションの完了後にコールバック関数を呼び出す場合は、アニメーションの完了関数をフックして、コールバックを呼び出す必要があります。

20
jfriend00

これは、入力パラメーターも受け取る戻り値を持つコールバックの例です。

function test2(arg1, arg2, callback) {
  var result = callback(arg1, arg2);

  alert('arg1=' + arg1 + ', arg2=' + arg2 + ', result=' + result);
}

test2(1, 2, function(a, b) { return a + b; });
7
Remco Nonhebel
function myfunction(callback) {
 // something

 callback();
}

myfunction(callback);

コールバックを呼び出さず、関数への関数参照として渡すことに注意してください。その後、関数の最後またはどこでも実行したいときに呼び出します。

4
Keith.Abramo