Asynkron JavaScript
- Föregående sida JS-kall
- Nästa sida JS Promise
"Jag kommer att bli klar senare!"
Funktioner som körs parallellt med andra funktioner kallas asynkrona (asynchronous)
Ett bra exempel är JavaScript setTimeout()
Asynkron JavaScript
Exemplet som användes i föregående kapitel har förenklats avsevärt.
Syftet är att visa syntaxen för callback-funktioner:
Exempel
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2, myCallback) { let sum = num1 + num2; myCallback(sum); } myCalculator(5, 5, myDisplayer);
I det föregående exemplet,myDisplayer
är namnet på funktionen.
Det används som parameter till myCalculator()
。
I den verkliga världen används callbacker oftast tillsammans med asynkrona funktioner.
En typisk exempel är JavaScript setTimeout()
。
Vänta på timeout
När du använder JavaScript-funktioner setTimeout()
När, kan du specificera vilken callback-funktion som ska köras vid timeout:
Exempel
setTimeout(myFunction, 3000); function myFunction() { document.getElementById("demo").innerHTML = "I love You !!"; }
I det föregående exemplet,myFunction
Används som en callback.
Funktion (funktnamn) som skickas som parameter till setTimeout()
。
3000 är millisekunderna innan timeout, så 3 sekunder senare kommer den att anropas myFunction()
。
När du överför en funktion som parameter, kom ihåg att inte använda klamrar.
Korrekt: setTimeout(myFunction, 3000);
Fel: setTimeout(myFunction(), 3000);
Om du inte överför namnet på funktionen som parameter till en annan funktion, kan du alltid överföra hela funktionen:
Exempel
setTimeout(function() { myFunction("I love You !!!"); }, 3000); function myFunction(value) {}} document.getElementById("demo").innerHTML = value; }
I det föregående exemplet,function(){ myFunction("Jag älskar dig !!!"); }
används som callback. Det är en fullständig funktion. En fullständig funktion som skickas som parameter till setTimeout().
3000 är millisekunderna innan timeout, så 3 sekunder senare kommer den att anropas myFunction()
。
Vänta på intervall:
När du använder JavaScript-funktioner setInterval()
kan du specificera vilken callback-funktion som ska köras vid varje intervall:
Exempel
setInterval(myFunction, 1000); function myFunction() { let d = new Date(); document.getElementById("demo").innerHTML = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); }
I det föregående exemplet,myFunction
används som callback.
Funktion (funktnamn) som skickas som parameter till setInterval()
。
1000 är millisekunderna mellan intervallerna, så myFunction()
anropas en gång per sekund.
Vänta på fil
Om du skapar en funktion för att ladda externa resurser (som skript eller filer), kan du inte använda dessa innehåll innan de är helt laddade.
Detta är det bästa tillfället att använda en callback-funktion.
Detta exempel laddar en HTML-fil (mycar.html
och visa den här HTML-filen i webbsidan när den är helt laddad:
Vänta på fil:
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function getFile(myCallback) { let req = new XMLHttpRequest(); req.open('GET', "mycar.html"); req.onload = function() { om (req.status == 200) { myCallback(this.responseText); } annars { myCallback("Fel: " + req.status); } } req.send(); } getFile(myDisplayer);
I det föregående exemplet,myDisplayer
används som callback.
Funktion (funktnamn) som skickas som parameter till getFile()
。
Nedan är mycar.html
kopia:
mycar.html
<img src="img_car.jpg" alt="Nice car" style="width:100%"> <p>En bil är ett hjulfört, självbärande fordon används för transport.</p> <p>De flesta definitioner av termen specificerar att bilar är designade för att köra huvudsakligen på vägar, att ha sittplatser för en till åtta personer, och att typiskt ha fyra hjul.</p> <p>(Wikipedia)</p>
- Föregående sida JS-kall
- Nästa sida JS Promise