Codice Asincrono con Callback in JavaScript

Supponiamo di avere una funzione asincrona:

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

Supponiamo di utilizzare questa funzione nel seguente modo:

javascriptmake();
console.log('2'); // verrà eseguito per primo

Supponiamo di voler fare in modo che la seconda stampa in console venga eseguita dopo che l'operazione asincrona all'interno della funzione è completata. Uno degli approcci utilizzati per questo scopo è l'uso di una callback: incapsuliamo il codice in attesa in una funzione anonima e la passiamo come parametro alla funzione make:

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

Naturalmente, di per sé, questo non risolve il nostro problema. Per ora abbiamo semplicemente stabilito questa convenzione: se desideri eseguire del codice dopo che make viene attivata, passa quel codice come callback alla chiamata di make.

Modifichiamo il codice della funzione make in modo che inizi a funzionare secondo la nostra convenzione:

javascriptfunction make(callback) {
  setTimeout(function() {
    console.log('1'); // qualche operazione asincrona, potrebbe non essere una sola
    callback();       // poi la nostra callback
  }, 3000);
}
Задание 1

Spiega in quale ordine i numeri verranno stampati in console:

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

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