mirror of
https://github.com/xfarrow/blink
synced 2025-06-27 09:03:02 +02:00
Update
This commit is contained in:
44
backend/tutorials/callbacks.js
Normal file
44
backend/tutorials/callbacks.js
Normal file
@ -0,0 +1,44 @@
|
||||
// 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 (non concorrenti), ma che ci permette di
|
||||
comprendere le basi di questo meccanismo.
|
||||
*/
|
||||
|
||||
/* ===== End Simple Callback ===== */
|
||||
}
|
||||
|
||||
entryPoint();
|
12
backend/tutorials/delay.js
Normal file
12
backend/tutorials/delay.js
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
The built-in function setTimeout uses callbacks. Create a promise-based alternative.
|
||||
The function delay(ms) should return a promise. That promise should resolve after ms milliseconds, so that we can add .then to it, like this:
|
||||
*/
|
||||
|
||||
function delay(ms){
|
||||
return new Promise(resolve => {
|
||||
setTimeout(resolve, ms);
|
||||
});
|
||||
}
|
||||
|
||||
delay(1000).then(() => console.log("Hello world!"));
|
46
backend/tutorials/promises.js
Normal file
46
backend/tutorials/promises.js
Normal file
@ -0,0 +1,46 @@
|
||||
// https://javascript.info/promise-basics
|
||||
|
||||
/*
|
||||
The function passed to Promise is called "executor". When Promise gets
|
||||
created, the executor gets executed.
|
||||
When the Promise ends, it should either call the "resolve" or "reject"
|
||||
callbacks:
|
||||
resolve(value) — if the job is finished successfully, with result value.
|
||||
reject(error) — if an error has occurred, error is the error object.
|
||||
*/
|
||||
let promise = new Promise(function(resolve, reject) {
|
||||
setTimeout(() => resolve("done"), 500);
|
||||
});
|
||||
|
||||
/*
|
||||
The first argument of .then is a function that runs when the promise is resolved and receives the result.
|
||||
The second argument of .then is a function that runs when the promise is rejected and receives the error.
|
||||
*/
|
||||
promise.then(
|
||||
result => console.log("The operation was successful. It returned " + result),
|
||||
error => console.log("The operation was not successful: " + error)
|
||||
);
|
||||
|
||||
/*
|
||||
Or we can pass only one argument if we're interested only in a positive result
|
||||
*/
|
||||
promise.then(
|
||||
result => console.log("The operation was successful. It returned " + result)
|
||||
);
|
||||
|
||||
/*
|
||||
Or we can pass only one argument to the method "catch" if we're interested
|
||||
in negative results only.
|
||||
|
||||
promise.catch internally just calls promise.then(null, f)
|
||||
*/
|
||||
promise.catch(
|
||||
error => console.log(error)
|
||||
);
|
||||
|
||||
/*
|
||||
finally gets always called
|
||||
*/
|
||||
promise.finally(
|
||||
() => console.log("The execution has terminated. Bye")
|
||||
);
|
Reference in New Issue
Block a user