JavaScriptでのコールバックを用いた非同期コード

ある非同期関数があるとします:

javascriptfunction make() {
  setTimeout(function() {
    console.log('1');
  }, 3000);
}

この関数を次のように使用するとします:

javascriptmake();
console.log('2'); // 最初に実行される

関数内の非同期操作が実行された後に、 コンソールへの2番目の出力が実行されるようにしたいとします。 これに使用されるアプローチの一つは、 コールバックの使用です: 待機するコードを無名関数でラップし、 それを関数 make にパラメータとして渡します:

javascriptmake(function() {
  console.log('2');
});

もちろん、これだけでは問題は解決しません。 今のところ、私たちは単に次の取り決めをしただけです: make の実行後にコードを実行したい場合は、 そのコードをコールバックとして make の呼び出しに渡してください。

私たちの取り決めに従って動作するように、 関数 make のコードを修正しましょう:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // 何らかの非同期操作(複数でも可)
    callback();       // その後、私たちのコールバック
  }, 3000);
}
Задание 1

コンソールに数字がどの順序で表示されるか説明してください:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1');
    callback();
  }, 3000);
}

make(function() {
  console.log('2');
  console.log('3');
});