JavaScript asincrono
- Pagina precedente Callback JS
- Pagina successiva Promise JS
"I will finish later!"
Le funzioni che eseguono in parallelo con altre funzioni sono dette asincrone (asincrone)
Un ottimo esempio è JavaScript setTimeout()
JavaScript asincrono
L'esempio utilizzato nel capitolo precedente è stato notevolmente semplificato.
Lo scopo è dimostrare la sintassi del callback function:
Esempio
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2, myCallback) { let sum = num1 + num2; myCallback(sum); } myCalculator(5, 5, myDisplayer);
Nell'esempio sopra,myDisplayer
è il nome della funzione.
viene passato come parametro a myCalculator();
。
Nel mondo reale, i callback vengono utilizzati più spesso insieme a funzioni asincrone.
Un esempio tipico è JavaScript setTimeout();
。
Attendere il timeout
Quando si utilizza una funzione JavaScript, setTimeout();
Si può specificare la funzione di callback da eseguire al termine dell'intervallo di tempo:
Esempio
setTimeout(myFunction, 3000); function myFunction() { document.getElementById("demo").innerHTML = "I love You !!"; }
Nell'esempio sopra,myFunction
viene utilizzato come callback.
La funzione (nome della funzione) viene passata come parametro a setTimeout();
。
3000 sono i millisecondi prima del timeout, quindi verrà chiamata dopo 3 secondi myFunction()
。
Quando si passa una funzione come parametro, ricordarsi di non usare parentesi.
Corretto: setTimeout(myFunction, 3000);
Errore: setTimeout(myFunction(), 3000);
Se non si passa il nome della funzione come parametro a un'altra funzione, è sempre possibile passare l'intera funzione:
Esempio
setTimeout(function() { myFunction("I love You !!!"); }, 3000); function myFunction(value) {}} document.getElementById("demo").innerHTML = value; }
Nell'esempio sopra,function(){ myFunction("Mi piace te !!!"); }
Utilizzato come callback. È una funzione completa. La funzione completa viene passata come parametro a setTimeout().
3000 sono i millisecondi prima del timeout, quindi verrà chiamata dopo 3 secondi myFunction()
。
Attendere l'intervallo:
Quando si utilizza una funzione JavaScript, setInterval()
Si può specificare la funzione di callback da eseguire ogni intervallo:
Esempio
setInterval(myFunction, 1000); function myFunction() { let d = new Date(); document.getElementById("demo").innerHTML= d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); }
Nell'esempio sopra,myFunction
usata come callback.
La funzione (nome della funzione) viene passata come parametro a setInterval()
。
1000 sono i millisecondi tra intervalli, quindi myFunction()
Eseguire una volta al secondo.
Attendere il file
Se crei una funzione per caricare risorse esterne (come script o file), non puoi utilizzare queste risorse prima che il contenuto sia completamente caricato.
È il momento migliore per utilizzare callback.
In questo esempio si carica un file HTML (mycar.html
e visualizzare il file HTML completo nella pagina web:
Attendere il file:
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function getFile(myCallback) { let req = new XMLHttpRequest(); req.open('GET', "mycar.html"); req.onload = function() { if (req.status == 200) { myCallback(this.responseText); } myCallback("Errore: " + req.status); } } req.send(); } getFile(myDisplayer);
Nell'esempio sopra,myDisplayer
usata come callback.
La funzione (nome della funzione) viene passata come parametro a getFile()
。
Di seguito è riportato: mycar.html
copia di:
mycar.html
<img src="img_car.jpg" alt="Nice car" style="width:100%"> <p>Un'automobile è un veicolo a ruote, autoalimentato e motorizzato utilizzato per il trasporto.</p> <p>La maggior parte delle definizioni del termine specifica che le automobili sono progettate per circolare principalmente su strade, con un numero di posti da uno a otto persone, e tipicamente con quattro ruote.</p> <p>(Wikipedia)</p>
- Pagina precedente Callback JS
- Pagina successiva Promise JS