Kode Asinkron dengan Callback di JavaScript

Misalkan kita memiliki suatu fungsi asinkron:

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

Misalkan kita menggunakan fungsi ini dengan cara berikut:

javascriptmake();
console.log('2'); // akan dieksekusi pertama

Misalkan kita ingin membuat agar output kedua ke konsol dieksekusi setelah operasi asinkron di dalam fungsi selesai. Salah satu pendekatan yang digunakan untuk ini adalah penggunaan callback: bungkus kode yang menunggu ke dalam fungsi anonim dan berikan sebagai parameter ke fungsi make:

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

Tentu saja, ini sendiri tidak menyelesaikan masalah kita. Untuk saat ini, kita hanya membuat kesepakatan: jika ingin mengeksekusi kode setelah make dipicu, berikan kode tersebut sebagai callback dalam pemanggilan make.

Mari perbaiki kode fungsi make agar ia mulai bekerja sesuai dengan kesepakatan kita:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // semacam operasi asinkron, bisa lebih dari satu
    callback();       // kemudian callback kita
  }, 3000);
}
Задание 1

Jelaskan, dalam urutan apa angka-angka akan ditampilkan di konsol:

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

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