カスタム関数があり、それにコールバック関数を追加したいのですが、他の質問を調べましたが、問題の答えを実際に見つけることができませんでした。つまり、基本的には次のようになります。
function myfunction() {
// something
}
そして、コールバックとしてトリガーしたい別の関数があり、最終的には次のようにmyfunctionを呼び出したいと思います。
myfunction(callback());
だから誰かがこれを行う方法を教えてもらえますか?
次のように呼び出します(コールバック関数を引数として渡します)。
_ myfunction(myCallbackFn);
_
関数への参照を引数として渡す場合、関数名の後に括弧がないことに注意してください。これは関数を呼び出さず、関数への参照を渡すだけで、後でカスタム関数内から呼び出すことができます。
関数を定義して、次のようにその中でコールバック関数を呼び出します。
_function myfunction(cb) {
cb(arg1, arg2);
}
_
カスタム関数内から実際にコールバック関数を呼び出す方法は複数あることに注意してください。普通に呼び出すだけでthis
引数を気にしない場合は、次のように使用できます。
_cb();
_
this
引数を何かに設定する場合は、次を使用できます。
_cb.call(thisArg, arg1, arg2);
_
現在の引数を渡すか、引数の配列を渡してthis
引数を設定する場合は、次のようにします。
_cb.apply(thisArg, argArray);
_
現在のコードでは、この領域にjavascriptエラーがあります。
_test(Rand_gyumolcs, link, callback){
callback();
};
_
これは正当なJavaScriptではありません。あなたが何をしようとしているのかわかりませんが、これは関数宣言の半分と関数呼び出しの半分のように見えます。テスト関数を呼び出したいだけの場合は、次のように使用します。
_test(Rand_gyumolcs, link, callback);
_
テスト内で、アニメーションの完了後にコールバック関数を呼び出す場合は、アニメーションの完了関数をフックして、コールバックを呼び出す必要があります。
これは、入力パラメーターも受け取る戻り値を持つコールバックの例です。
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; });
function myfunction(callback) {
// something
callback();
}
myfunction(callback);
コールバックを呼び出さず、関数への関数参照として渡すことに注意してください。その後、関数の最後またはどこでも実行したいときに呼び出します。