コールバック関数
今までコールバック関数をちゃんと把握してなかったので、メモ。 今回はnode.jsを使います。加算を2段階で行う処理。
function add(a,b,callback) { console.log(a+b) callback(a+b) } function add10(base) { console.log(base + 10) } add(1,2,add10)
実行結果:
3 13
1つ目の引数と2つ目の引数を加算するaddという関数があり、さらにその値に10を加算するadd10という関数がある。 1つ目と2つ目の引数を処理し、3つ目の引数であるadd10関数に渡してる。このadd10はコールバック関数を使って処理されている。
もちろん、コールバック関数を使わず以下のようにもできる。
function add(a,b) { console.log(a+b) add10(a+b) } function add10(base) { console.log(base + 10) } add(1,2)
実行結果:
3 13
ただ、こうするとadd10関数とadd関数が密になってしまい、汎用的ではなくなるので、こっちは使わない。
ちなみに、以下のように、add10という変数にすることも可能だけど、引数使いたくなった場合に応用が効かないので、これも使わない。
var add10 = function (base) { console.log(base + 10) }
では、次にもう一つ関数を繋げてみたいとする。add10で加算された値を「さらに2倍する」関数を繋げてみる。
function add(a,b,callback) { console.log(a+b) callback(a+b) } function add10(base,callback) { console.log(base + 10) callback(base+10) } function multiply(base) { console.log(base * 2) } add(1,2, function(base) {add10(base,multiply)})
結果:
3 13 26
add10関数にコールバック関数を追加し、そのコールバック関数としてmultiply関数を追加する。
add(1,2,add10(multiply))
のような感じでやってみたくなっても、この場合はadd10ではなくadd10()となり関数の実行結果を引数で使おうとしてしまい、エラーになってしまう。
ということで、書いてみた。
既存の処理に具体的な関数を追加せず、コールバック関数として実行することで密にもならないし、関数が実行された後にその値を使ってコールバック関数を実行できるようになるため、今回のような加算・乗算だけでなく、エラー処理などにも確かに使えるという感じでした。
お休み中ご教授頂いたT先輩本当にありがとうございます><