Kodi Asinkron me Callback në JavaScript

Le të themi se kemi një funksion asinkron:

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

Le të themi se e përdorim këtë funksion në mënyrën e mëposhtme:

javascriptmake();
console.log('2'); // do të ekzekutohet i pari

Le të themi se duam të bëjmë që printimi i dytë në konsolë të ekzekutohet pasi të ketë përfunduar operacioni asinkron brenda funksionit. Një nga qasjet e përdorura për këtë është përdorimi i callback-ëve: le të mbështjellim kodin në pritje në një funksion anonim dhe ta kalojmë si parametër në funksionin make:

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

Sigurisht, vetëm kjo nuk do ta zgjidhë problemin tonë. Tani për tani ne thjesht kemi bërë marrëveshjen e mëposhtme: nëse dëshironi të ekzekutoni kod pasi të aktivizohet make, atëherë kaloni atë kod si callback në thirrjen make.

Le të rregullojmë kodin e funksionit make në mënyrë që ai të fillojë të punojë në përputhje me marrëveshjen tonë:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // një operacion asinkron, mund të jetë jo vetëm një
    callback();       // pastaj callback-ja jonë
  }, 3000);
}
Задание 1

Tregoni, në çfarë radhe do të printohen numrat në konsolë:

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

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