Asynchroniczny JavaScript
- Poprzednia strona JS Callback
- Następna strona JS Promise
"I will finish later!"
Funkcje działające równolegle z innymi funkcjami są nazywane asynchronicznymi (asynchronicznymi)
Dobrym przykładem jest JavaScript setTimeout()
Asynchroniczny JavaScript
Przykład użyty w poprzednim rozdziale został znacznie uproszczony.
Celem tego przykładu jest demonstracja składni zwolniczek:
Przykład
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2, myCallback) { let sum = num1 + num2; myCallback(sum); } myCalculator(5, 5, myDisplayer);
W powyższym przykładzie,myDisplayer
jest nazwą funkcji.
jest przekazywany jako parametr do myCalculator();
。
W rzeczywistym świecie, zwolniczki są najczęściej używane z asynchronicznymi funkcjami.
Jednym z typowych przykładów jest JavaScript setTimeout();
。
Czekanie na timeout
Podczas użycia funkcji JavaScript setTimeout();
Możesz指定超时时执行的回调函数:
Przykład
setTimeout(myFunction, 3000); function myFunction() { document.getElementById("demo").innerHTML = "I love You !!"; }
W powyższym przykładzie,myFunction
jest używany jako zwolniczka.
funkcja (nazwa funkcji) jest przekazywana jako parametr do setTimeout();
。
3000 to liczba milisekund przed timeoutem, więc 3 sekundy później zostanie wywołana myFunction()
。
Pamiętaj, że gdy przekazujesz funkcję jako parametr, nie używaj nawiasów.
Poprawnie: setTimeout(myFunction, 3000);
Błąd: setTimeout(myFunction(), 3000);
Jeśli nie przekazujesz nazwy funkcji jako parametru do innej funkcji, zawsze możesz przekazać całą funkcję:
Przykład
setTimeout(function() { myFunction("I love You !!!"); }, 3000); function myFunction(value) {}} document.getElementById("demo").innerHTML = value; }
W powyższym przykładzie,function(){ myFunction("I love You !!!"); }
jako zwrotne wywołanie. Jest to pełna funkcja. Pełna funkcja jest przekazywana jako parametr do setTimeout().
3000 to liczba milisekund przed timeoutem, więc 3 sekundy później zostanie wywołana myFunction()
。
Czekaj na interval:
Podczas użycia funkcji JavaScript setInterval()
można指定每个间隔执行的回调函数:
Przykład
setInterval(myFunction, 1000); function myFunction() { let d = new Date(); document.getElementById("demo").innerHTML = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); }
W powyższym przykładzie,myFunction
jako zwrotka.
funkcja (nazwa funkcji) jest przekazywana jako parametr do setInterval()
。
1000 to liczba milisekund między intervalami, więc myFunction()
wywoływana co sekundę.
Czekaj na plik
Jeśli tworzysz funkcje do ładowania zewnętrznych zasobów (np. skryptów lub plików), to te zasoby nie będą dostępne przed pełnym załadowaniem.
To jest najlepszy moment na użycie zwrotnych wywołań.
W tym przykładzie ładuje się plik HTML (mycar.html
i wyświetl ten plik HTML na stronie po jego pełnym załadowaniu:
Czekaj na plik:
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("Błąd: " + req.status); } } req.send(); } getFile(myDisplayer);
W powyższym przykładzie,myDisplayer
jako zwrotka.
funkcja (nazwa funkcji) jest przekazywana jako parametr do getFile()
。
Poniżej znajduje się mycar.html
kopia:
mycar.html
<img src="img_car.jpg" alt="Dobry samochód" style="szerokość:100%"> <p>Samochód to kołowe, samozasilane pojazdy mechaniczne używane do transportu.</p> <p>Większość definicji tego terminu wskazuje, że samochody są projektowane do głównego użytku na drogach, mają miejsce dla jednej do ośmiu osób, zazwyczaj mają cztery koła.</p> <p>(Wikipedia)</p>
- Poprzednia strona JS Callback
- Następna strona JS Promise