Kod Asinkron dengan Panggilan Balik dalam JavaScript

Katakan kita mempunyai satu fungsi asinkron:

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

Katakan kita menggunakan fungsi ini dengan cara berikut:

javascriptmake();
console.log('2'); // akan dilaksanakan dahulu

Katakan kita ingin memastikan output kedua ke konsol dilaksanakan selepas operasi asinkron di dalam fungsi selesai. Salah satu pendekatan yang digunakan untuk ini ialah penggunaan panggilan balik: bungkus kod yang menunggu dalam fungsi tanpa nama dan hantarkannya sebagai parameter kepada fungsi make:

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

Sudah tentu, ini sahaja tidak menyelesaikan masalah kita. Setakat ini kita hanya membuat perjanjian berikut: jika ingin melaksanakan kod selepas make dicetuskan, hantarkan kod tersebut sebagai panggilan balik dalam panggilan make.

Mari betulkan kod fungsi make supaya ia mula berfungsi mengikut perjanjian kami:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // beberapa operasi asinkron, mungkin bukan satu
    callback();       // kemudian panggilan balik kami
  }, 3000);
}
Задание 1

Terangkan, dalam susunan apakah nombor akan dipaparkan dalam konsol:

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

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