2007年10月09日

コールバック関数

ところでコールバック関数はインスタンスメソッドになっている。callback(event)やcallbacklist(event)が呼ばれるのはインスタンス生成より早く、クラス定義読み込み時のようだけど、コールバック実行時にはselfがちゃんと決まっている。
メンバ関数をコールバックとして使いたい時は static にすればOK。 アドレスまわりが原因。 昔ちょっとハマった気がする。
クライアント側に"function name"の関数を定義. URLを呼び出すとAPIを呼び出した結果の値(下の例ではdata)でコールバック関数を呼び出す。
関数を呼び出す際に関数の参照を渡して呼び出すことにより、呼び出した関数から自身が提供する関数を呼び出してもらうことがある。このとき参照として渡される関数をコールバック関数と呼ぶ。
Win32::DDEには、テストされていないと書いてあるけどXTYP_ADVSTARTを送る関数があったりコールバック関数を登録することができたりするが、DDEサーバであるRSSがXTYP_ADVDATAを送っているにもかかわらず、それをPerl側で拾えないという感じだった。
あー、なんで sary のインデックスポインタの割り当て関数はオプショナルの引数を与えられないんでしょうねぇ。これだとステートフルだったりパラメータを調整したかったりする場合に使いにくいなぁ。
たとえば、クラスのなかで、別のライブラリの関数にコールバック関数を渡している場合を考えます。 コールバック関数の外では、「this」はクラスオブジェクトを指しています。
JavaScript 1.7 function arrayDiff(aOlder, aNewer){ function f(aElement, aIndex, aArray){ // コールバック関数 /* filter の第 1 引数の各要素についてこの関数は繰り返し実行される。 filter の第 2 引数がこの関数内の this になる。
MODULE} では、gen_server:call/2 や gen_server:call/2 の第一引数の指定が多少異なる(後述)。 第二引数 ?MODULE は、コールバック関数が存在するモジュール名。 第三引数 [] は、コールバック関数 init に渡す引数を設定できる。
Graphics::EnumerateMetafileで指定するコールバック関数、EnumerateMetafileProcを見てみると、EnumEnhMetaFileのコールバック関数EnhMetaFileProcとの比較はそんなに難しくないことがわかる。
CALLBACK関数の意味。 C++でウィンドウズプログラミングしてた頃、良く見たけど、意味も分からずただのおまじない扱いしていたCALLBACK。
[鏡] 入門 JSON 3 -- JSONP とコールバック関数 -- 戯れ言++. 曇時々晴 最高気温:15℃ 詳細. JSONP (JSON with Padding)というのは JSON のデータフォーマットにちょっとした記述を加えて JavaScript の関数として呼び出せるようにしたものです。
呼び出すだけでなく、結果を受け取るにはaddCallbackメソッドを用いて、コールバック関数を指定する。コールバック関数で指定したfunctionでは、引数として呼び出し結果を受け取ることができる。
こういう場合、ダミーのDIVを設けておいて処理の最後にdummydiv.style.backgroundColor=white; としてあげるか、コールバック関数を設けて再度関数を起動させる、といった処理でもって乗り切れた。 たぶんそれでもって再描画をかけるのだろう。
そういえば昔、timeSetEvent(Win32 API)のコールバック関数内では、呼び出し可能なAPIが限られている、と本で読んだことがある。
例えばGrabメソッドはコールバック関数を省略すれば同期通信が可能ですが、Replaceメソッドは常に非同期通信です。また、Grabメソッドのように結果をわざわざinnerHTMLに埋め込むためのスクリプトを書く必要もありません。
デフォルトプロパティとしての個別コールバック関数 パラメータを並べなくても個別コールバック関数を利用すれば以下の事を別々に処理できる。 メリットはWEBサービスを呼び出すシンタックスが簡潔になります。
Callback関数を付加した形でJSONを試す。 JSONPを利用する場合は、「keyword(キーワード)」、「output(出力形式)=json」とオプショナルの「callback(コールバック関数)=任意」を渡す。
methodには、通常のformと同じく getもしくはpostを指定する。 必須なので注意。 あと、Ajax処理をしたいところにon〜イベントを書く。 処理はdoSubmit(this, コールバック関数); となる。コールバック関数はnullの場合はコールバックを行わない。
タスク間通信オブジェクトのタイプは、イベントフラグでもメールボックスでも何でも構いません。自分の最も使い易いオブジェクトを利用します。

ニックネーム mami at 09:13| 日記