Vsem je najljubše: koncept video časa! Povratni klici so pomemben koncept v JavaScript. So funkcije, ki se pokličejo, ko se dejanje zaključi. Nato posodite strukturo in čas naši kodi.
Vzemimo za primer animacijo, ki smo jo uporabili v zadnjem videu. Za animacijo je potreben čas. Kaj če želite, da se kaj drugega zgodi ravno takrat, ko se animacija konča? Ali morate narediti a setTimeout
za enako dolžino kot animacija? Ne. jQuery nam daje funkcije povratnega klica, ki se uporabljajo prav v ta namen.
Običajno so dodaten parameter, ki ga posredujemo metodi. V primeru animacije prenesemo funkcijo kot zadnji parameter. To je funkcija povratnega klica in bo poklicana, ko bo animacija končana.
$("#element").animate(( // stuff to animate ), function() ( // callback function ));
To se morda zdi nekoliko zabavno, v bistvu pa samo počnemo:
.animate(a, b)
Kje a
je objekt lastnosti in vrednosti in b
je funkcija povratnega klica.
Toda iz zadnjega videoposnetka vemo, da lahko animacija zavzame tudi časovni parameter, ki določa, kako dolgo bo trajala animacija. Kam gre to? To je neobvezen parameter, tako kot je funkcija povratnega klica. Če bi ga želeli uporabiti, bi ga postavili naravnost na sredino, torej v bistvu:
.animate(propertiesObject, duration, callback);
In obstaja še en neobvezen parameter, niz, ki ga lahko prenesemo, da določimo omilitveno vrednost.
.animate(propertiesObject, duration, easing, callback);
jQuery je v zvezi s temi neobveznimi parametri ravno kul in pameten. Če izpustite srednja dva in preprosto prenesete povratni klic, lahko ugotovi, kaj posredujete, je funkcija, ne številka ali niz, zato ve, da mislite na funkcijo povratnega klica. Ni vam treba navajati lažnih vrednosti ali česar koli drugega. To je samo dobra zasnova API-ja!
Ko pogledate dokumentacijo jQuery, jo prikažejo takole:
.animate (lastnosti (, trajanje) (, umirjanje) (, popolno))
Nato takoj po razlagi pričakovanih vrst.
Ampak vseeno, nazaj k povratnim klicem. Lahko se precej ugnezdiš. Predstavljajte si, da v funkcijo povratnega klica vstavite še eno animacijo in ta animacija ima svoj povratni klic. To je povsem smiselno, saj boste morda želeli narediti večstopenjsko animacijo. Ostati moraš le organiziran.
Oglejte si pisalo 450c5810be27a9a8946cb8012cbd1213 Chrisa Coyierja (@chriscoyier) na CodePen
Kot primer tukaj uporabljamo samo animacijo. Morda je še pogostejša uporaba funkcij povratnega klica Ajax. Ajax je, ko brskalnik pokliče drug vir, ne da bi osvežil stran. To lahko traja popolnoma neznano. Odvisno od pasovne širine in zakasnitve ter velikosti datoteke in pogojev napak ter vseh vrst stvari. Verjetno s to zahtevo Ajaxa ne morete storiti ničesar, dokler ne dobite nekaj nazaj ali drugače več informacij. Funkcije povratnega klica so kot nalašč za to, kasneje pa se bomo lotili tega.