callbackについて
callbackとは「関数の引き数として渡される関数」のこと。何かしらの関数(A)を呼び出すときに、その引き数として別の関数(B)を渡しておき、呼び出したそのAの中で実行される関数Bがcallback関数と呼ばれる。
引き数に関数を渡せることで、処理がより柔軟になる点と、JavaScriptでは非同期処理のために使われることが多い。
たとえば、以下のページのfunction runScriptText(scriptText, callback)は第一引き数にscriptのテキストが、第二引き数に関数が渡されることが想定されている。
使用例が以下。
code:code.js
runScriptText (scripttext, function (err, value) {
if (err) {
alertDialog ("Error running script: " + err.message + ".");
}
});
}
第二引き数にfunction(無名関数)が渡されていることがわかる。
エラーがあったら、それをアラートで表示する、という関数が渡されている。
よって、runScriptTextの実行でエラーがあるなら、それを表示する、という形になる。
引き数で渡す関数を換えれば、別の場所では別の処理ができる(ダイアログを表示させるのではなくlogに残すだけとか)。
上記のような処理の分岐以外に、非同期処理でも使われる。
通常コードは上から順番に実行されていくが、Aの処理が完全に終わってから実行したいこと、というのがある。たとえば、外部ファイルの内容をすべて読み込んでからアラートを出す、とかそういうの。
コードは超高速に走るので、普通に書くとファイルの読み込みが完全に終わる前に次の処理が走ってしまうことが起こる。そこで、callバックで必要な処理をつないでおく。
ref.