mirror of https://github.com/xfarrow/blink
46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
// 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.
|