JavaScript-də kallbeklərlə asinxron kod

Tutaq ki, bizim müəyyən asinxron funksiyamız var:

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

Tutaq ki, biz bu funksiyadan aşağıdakı kimi istifadə edirik:

javascriptmake();
console.log('2'); // birinci icra olunacaq

Tutaq ki, biz elə etmək istəyirik ki, ikinci konsol çıxarışı, funksiyanın daxilindəki asinxron əməliyyat yerinə yetirildikdən sonra icra olunsun. Bunun üçün istifadə olunan yanaşmalardan biri kallbek istifadəsidir: gözlənilən kodu anonim funksiyaya çevirək və parametr kimi make funksiyasına ötürək:

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

Əlbəttə ki, bu, öz-özünə bizim məsələmizi həll etməyəcək. Biz sadəcə aşağıdakı razılaşmanı bağladıq: make işə düşdükdən sonra kodu icra etmək istəyirsinizsə, bu kodu make çağırışına kallbek kimi ötürün.

make funksiyasının kodunu, bizim razılaşmamıza uyğun işləməyə başlaması üçün düzəldək:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // müəyyən asinxron əməliyyat, bir neçə ola bilər
    callback();       // sonra bizim kallbekimiz
  }, 3000);
}
Задание 1

Konsola nömrələrin hansı ardıcıllıqla çıxarılacağını izah edin:

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

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