質問: ### 前提・実現したいこと コールバック関数について質問したいことがあります。 サンプルプログラムにコールバック関数を拝見し、興味があり学習を始めました 初学者なので、初学者用の本を購入したので、追加で応用編の書籍を購入しましたが、なかなかイメージできず、利点を理解することができません。 自分の認識だと、メイン文から関数が呼び出されたあと、さらにその関数の中で、別の関数が呼び出されるという認識で宜しいですか。 可能であれば、何か具体的な例をいただくことは可能でしょうか。 参考サイト http://qiita.com/apollom_cijun/items/bd9dc38e6317e0d73027
回答: 一例をあげると... 例えばある関数を呼び出した時にその中の処理が終わる前に呼び出し元に 戻ってくるようなケースを想像してみてください。 具体的には通信でデータをサーバーに送付するようなケースとか。 呼び出された関数の中で通信が終わるまでブロックされ呼び出し元に戻って こないと画面(表示)の更新も処理できないし操作もできないしフリーズ したようになってしまうかもしれませんが、裏で通信をさせておいて呼び出し 元にすぐ戻れば呼び出し元では通信が終了するまでの時間も何か他の作業 (表示の更新や操作の受付等)が可能になります。 こんなケースだと呼び出した関数の戻り値を見て通信が成功したとか失敗 したとかの判定をその場でする事ができなくなりますよね?(通信が終わってないので) そういう時に、通信が成功終了したらこの関数を呼び出してね、失敗終了したら この関数を呼び出してね、とコールバック関数を指定してやれば、通信が 終わった時にそこを実行させる事で通信の終了を把握する事ができます。