1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

コールバック関数とは

Last updated at Posted at 2021-05-04

##コールバック関数とは
関数の引数に渡された関数のことをコールバック関数といいます。
呼び出された関数が逆に関数を呼び出す側になるのでコールバックと言います。
実際にコードをみてみましょう。

// ②confirmed関数が呼び出される
function confirmed(fn) {
  if(window.confirm("OKを押して下さい")) {
// ③引数で受け取った関数を呼び出す
    fn()
  }
};
// ①confiremed関数を呼び出す
confirmed(function () {
  console.log("OKを押しました");
});

このコードを実行してみます。

スクリーンショット 2021-05-04 19.14.36.png

スクリーンショット 2021-05-04 19.16.18.png

ポップアップでOKを押してくださいと出てきます。
OKを押し、コンソールを確認するとOKを押しましたと表示されています。

処理を追ってみます。
まず最初にconfirmed関数を呼び出します。
この時、confirmed関数に対し引数で関数を受け渡しています。
JavaScriptでは関数もオブジェクトの一つであるため、関数を引数として指定することも可能です。
呼び出されたconfirmed関数は処理を実行します。
処理を実行するのでブラウザ上にポップアップでOKを押してくださいが表示されます。
ユーザーがOKを押下すると、呼び出された側であったはずのconfirmed関数が引数で受け取った関数を呼び出しています。
その結果console.log("OKを押しました")の処理が実行されるので、コンソールにOKを押しましたと表示されます。
最初は呼び出された側であったconfirmed関数が処理を実行した後、逆に関数を呼び出す側になったと思います。
これがコールバック関数です。

##コールバック関数が主に使われるケース
非同期処理を行う時に使用する事が多いです。

非同期処理というのは、誰かに仕事を任せる事で自分は別の仕事を進める事ができます。(つまり同時に複数処理を行える。)
この場合コールバック関数は、非同期処理でお願いした仕事が終わった後に、特定の処理を指定する時に使われます。

実際にsetTimeout関数を使用した例をみてみましょう。

setTimeout( コールバック関数 , 時間の指定 )

第一引数にコールバック関数、第二引数に時間の指定をする事ができます。
setTimeoutは時間を指定し、一定時間後に一度だけコールバック関数を実行する事ができます。

const Bye = function(){
  console.log('さよなら!');
}

console.log('おはよう!')

setTimeout(Bye, 3000);

console.log('調子はどう?');

>> おはよう!
>> 調子はどう?
// 3秒後にByeが実行される
>> さよなら!

##まとめ
コールバック関数は関数の引数に渡された関数のことを指します。
非同期処理で使用する場合、お願いした仕事(非同期処理)が終わった後に、別の処理を指定する際にコールバック関数が使われます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?