コールバック関数の概念: コールバック関数は、関数ポインターを通じて呼び出される関数です。関数ポインタ (アドレス) をパラメータとして別の関数に渡し、このポインタがそれが指す関数を呼び出すために使用される場合、それをコールバック関数と呼びます。
JS API は次のように説明しています: コールバックは別の関数に引数として渡され、その親関数が完了した後に実行される関数です。
コールバック関数を使用する理由:発信者と受信者が分離されます。呼び出し元は、呼び出し先が誰であるかは気にしません。知っておく必要があるのは、特定のプロトタイプと特定の制限 (戻り値 int など) を持つ呼び出される関数が存在することだけです。
次のような例を考えてみましょう:
プロジェクトの最下位レベルと最上位レベルが異なる人によって完了すると仮定します。最下位レベルはデータ アクセスを担当し、最上位レベルはデータを担当します。トップレベルが、あるモジュールのデータを使用したので、ニーズを満たすデータを提供してほしいと下位レベルのスタッフに言いました。
下位レベルのスタッフは、「データは私が提供します。それをどのように表示して処理するかはあなたの仕事です。私がすべてのニーズに対応できるデータ インターフェイスを提供することは不可能です。」データを取得し、それを表示するための独自の関数を作成します。ネゴシエーションの後、双方が次のようなインターフェイスを提供します:
//data は最下層を表します 提供されたデータ ソース、funcName は高レベルの呼び出し関数を表します
function(data, funcName){
1.data はケース 1 に属し、最下層で処理されます。
2.data はケース 2 に属し、上位レベルで処理されます。 関数を使用します。
...
}
を処理するために上位レベルによって提供される funcName を明確にするために、例を見て理解しましょう一度に
//データ ソースの場合指定されるのは生徒のスコアである整数です。num0 の場合は上位層で処理されます。
/ /以下の関数をコピー 1.js として保存
function f(num,callback){
if(numalert("低レベル関数の処理を呼び出す!");
alert("スコアを負にすることはできません。入力エラーです!");
}else if(num==0){
alert("低レベル関数の処理を呼び出します!"); ("学生は試験を受けていない可能性があります! ");
}else{
alert("高レベル関数の処理を呼び出します!");
callback(); }
コードをコピー
コードは次のとおりです: //次の test.html ファイルを 1.js と同じディレクトリに保存します:
"http:/ /www.w3.org/TR/html4/loose.dtd" >
無題ドキュメント : when 生徒のスコア0 の場合は上位レイヤーで処理されます
生徒のスコアを入力してください< ;input type="text" id="score. ">
"pp">
このファイルを実行すると、効果がわかります。