JavaScriptでのコールバックを用いた非同期コード
ある非同期関数があるとします:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
この関数を次のように使用するとします:
make();
console.log('2'); // 最初に実行される
関数内の非同期操作が実行された後に、
コンソールへの2番目の出力が実行されるようにしたいとします。
これに使用されるアプローチの一つは、
コールバックの使用です:
待機するコードを無名関数でラップし、
それを関数 make にパラメータとして渡します:
make(function() {
console.log('2');
});
もちろん、これだけでは問題は解決しません。
今のところ、私たちは単に次の取り決めをしただけです:
make の実行後にコードを実行したい場合は、
そのコードをコールバックとして make の呼び出しに渡してください。
私たちの取り決めに従って動作するように、
関数 make のコードを修正しましょう:
function make(callback) {
setTimeout(function() {
console.log('1'); // 何らかの非同期操作(複数でも可)
callback(); // その後、私たちのコールバック
}, 3000);
}
コンソールに数字がどの順序で表示されるか説明してください:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});