Svima je najdraže: koncept video vremena! Povratni pozivi važan su pojam u JavaScript-u. To su funkcije koje se pozivaju kada se radnja dovrši. Zatim posudite strukturu i vrijeme našem kodu.
Uzmimo za primjer animaciju koju smo koristili u prošlom videu. Za pokretanje animacija treba vremena. Što ako želite da se nešto drugo dogodi točno kad ta animacija završi? Morate li napraviti setTimeout
jednaku dužinu kao i animacija? Ne. jQuery nam daje funkcije povratnog poziva koje se koriste upravo u tu svrhu.
Oni su obično dodatni parametar koji prosljeđujemo metodi. U slučaju animacije, kao posljednji parametar prenosimo funkciju. To je funkcija povratnog poziva i bit će pozvana kad se animacija dovrši.
$("#element").animate(( // stuff to animate ), function() ( // callback function ));
To izgleda pomalo zabavno, ali u osnovi radimo samo:
.animate(a, b)
Gdje a
je objekt svojstava i vrijednosti i b
funkcija je povratnog poziva.
Ali iz zadnjeg videozapisa znamo da animacija može uzeti i vremenski parametar koji određuje koliko će vremena trajati animacija. Kamo to ide? To je neobavezni parametar, baš kao i funkcija povratnog poziva. Da ga želimo koristiti, postavili bismo ga točno u sredinu, dakle u osnovi:
.animate(propertiesObject, duration, callback);
A tu je i još jedan neobavezni parametar, niz koji možemo proslijediti da odredimo vrijednost olakšavanja.
.animate(propertiesObject, duration, easing, callback);
jQuery je slučajno cool i pametan u vezi s tim neobaveznim parametrima. Ako izostavite srednje dvije i samo proslijedite povratni poziv, ono može reći da prenosite funkciju, a ne broj ili niz, pa zna da mislite na funkciju povratnog poziva. Ne morate predavati lažne vrijednosti ili nešto slično. To je samo dobar API dizajn!
Kada pogledate jQuery dokumentaciju, oni je prikazuju ovako:
.animate (svojstva (, trajanje) (, ublažavanje) (, kompletno))
Zatim odmah nakon objasnite očekivane vrste.
Ali u svakom slučaju, vratimo se na povratne pozive. Možete se prilično ugnijezditi. Zamislite da u funkciju povratnog poziva stavite još jednu animaciju, a ta animacija ima svoj povratni poziv. To je sasvim razumno, jer biste možda željeli napraviti animaciju u više koraka. Samo trebate ostati organizirani.
Pogledajte olovku 450c5810be27a9a8946cb8012cbd1213 Chrisa Coyiera (@chriscoyier) na CodePen
Ovdje samo koristimo animaciju kao primjer. Možda je još češća upotreba funkcija povratnog poziva Ajax. Ajax je kada preglednik poziva drugi resurs bez osvježavanja stranice. To može potrajati potpuno nepoznato vrijeme. Ovisi o propusnosti i latenciji te veličini datoteke i uvjetima pogreške i svim vrstama stvari. Vjerojatno ne možete ništa učiniti s tim zahtjevom Ajaxa dok ne dobijete nešto natrag ili na drugi način više informacija. Funkcije povratnog poziva savršene su za to, a u to ćemo ući kasnije.