blink/tutorials/0_callbacks.js

46 lines
1.4 KiB
JavaScript
Raw Normal View History

2023-10-05 12:20:00 +02:00
// https://javascript.info/callbacks
2024-02-23 11:17:02 +01:00
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'));
}
2023-10-05 12:20:00 +02:00
}
2024-02-23 11:17:02 +01:00
function entryPoint () {
/* ===== Begin Simple callback ===== */
2023-10-05 12:20:00 +02:00
2024-02-23 11:17:02 +01:00
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
2023-10-05 12:20:00 +02:00
scrittura su database, connessioni HTTP ecc..) ma abbiamo bisogno
del suo valore di ritorno per continuare una determinata operazione
2024-02-23 11:17:02 +01:00
(in questo caso la data di completamento dell'esecuzione),
2023-10-05 12:20:00 +02:00
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
2023-10-11 10:19:15 +02:00
eseguite in maniera sincrona, ma che ci permette di
2023-10-05 12:20:00 +02:00
comprendere le basi di questo meccanismo.
*/
2024-02-23 11:17:02 +01:00
/* ===== End Simple Callback ===== */
2023-10-05 12:20:00 +02:00
}
2023-10-11 12:37:20 +02:00
entryPoint();
// callbacks usually indicate that the
// execution of their code will continue
2024-02-23 11:17:02 +01:00
// asynchronously.