// https://javascript.info/callbacks function execute_action(param, callback){ if(param == "something"){ console.log("Executing action: " + param); callback(null, Date.now()); } else{ // We can call callback with one argument even if // the signature states two parameters callback(new Error("Invalid parameter")) } } function entryPoint(){ /* ===== Begin Simple callback ===== */ execute_action("something", function (error, time_of_completion){ if(error){ console.log("Something happened"); } else{ console.log("Time of completion: " + new Date(time_of_completion).toDateString()); } }); console.log("I started here!"); /* Ciò è utile se ad esempio execute_action fa operazioni lente (ad esempio scrittura su database, connessioni HTTP ecc..) ma abbiamo bisogno del suo valore di ritorno per continuare una determinata operazione (in questo caso la data di completamento dell'esecuzione), senza però bloccare le altre operazioni che non hanno bisogno di tale valore, in questo caso console.log("I started here!"); Questo però è solo un esempio in quanto le istruzioni verranno eseguite in maniera sincrona, ma che ci permette di comprendere le basi di questo meccanismo. */ /* ===== End Simple Callback ===== */ } entryPoint(); // callbacks usually indicate that the // execution of their code will continue // asynchronously.