Kõigi lemmik: kontseptsioonvideo aeg! Tagasihelistamised on JavaScripti oluline mõiste. Need on funktsioonid, mida kutsutakse siis, kui toiming on lõpetatud. Seejärel laenake meie koodile ülesehitus ja ajastus.
Võtame näiteks animatsiooni, mida kasutasime viimases videos. Animatsioonide käivitamine võtab aega. Mis siis, kui soovite, et midagi muud juhtuks just siis, kui see animatsioon lõpeb? Kas peate tegema setTimeout
animatsiooniga sama pikkuse a ? Ei. jQuery annab meile just sel eesmärgil kasutatavad tagasihelistamisfunktsioonid.
Need on tavaliselt täiendav parameeter, mille me meetodile edastame. Animatsiooni puhul edastame funktsiooni viimase parameetrina. See on tagasihelistamisfunktsioon ja seda kutsutakse siis, kui animatsioon on valmis.
$("#element").animate(( // stuff to animate ), function() ( // callback function ));
Võib-olla tundub see veidi funky, kuid sisuliselt me lihtsalt teeme:
.animate(a, b)
Kus a
on omaduste ja väärtuste objekt ning b
see on tagasihelistamisfunktsioon.
Kuid viimasest videost teame, et animatsioon võib võtta ka ajastuse parameetri, mis määrab animatsiooni kestuse. Kuhu see kaob? See on valikuline parameeter, täpselt nagu tagasihelistamisfunktsioon. Kui me sooviksime seda kasutada, paneksime selle otse keskele, nii et sisuliselt:
.animate(propertiesObject, duration, callback);
Ja on veel üks valikuline parameeter, string, mille saame anda leevendusväärtuse määramiseks.
.animate(propertiesObject, duration, easing, callback);
jQuery on nende valikuliste parameetrite osas lihtsalt lahe ja nutikas. Kui jätate kaks keskmist välja ja lihtsalt helistate tagasi, võib see öelda, et teie läbitav funktsioon on funktsioon, mitte number või string, nii et ta teab, et mõtlete tagasihelistamisfunktsiooni. Te ei pea edastama võltsväärtusi ega midagi muud. See on lihtsalt hea API disain!
Kui vaatate jQuery dokumentatsiooni, näitavad nad seda järgmiselt:
.animaalne (omadused (, kestus) (, leevendamine) (, täielik))
Siis kohe pärast oodatavate tüüpide selgitamist.
Aga igatahes tagasi tagasihelistamise juurde. Võite saada üsna pesastatud. Kujutage ette, et panete tagasihelistamisfunktsiooni teise animatsiooni ja sellel animatsioonil on oma tagasihelistamine. See on täiesti mõistlik, kuna võiksite teha mitmeastmelise animatsiooni. Peate lihtsalt organiseerunud olema.
Vaadake Chris Coyieri (@chriscoyier) CodePenilt Pen 450c5810be27a9a8946cb8012cbd1213
Me kasutame siin näiteks animatsiooni. Võib-olla on tagasihelistusfunktsioonide veelgi tavalisem kasutamine Ajax. Ajax on see, kui brauser nõuab teist ressurssi ilma lehte värskendamata. Selleks võib kuluda täiesti tundmatu aeg. See sõltub ribalaiusest ja latentsusest ning faili suurusest, veatingimustest ja igasugustest asjadest. Tõenäoliselt ei saa selle Ajaxi taotlusega midagi peale hakata, kuni olete midagi tagasi saanud või muul viisil rohkem teavet saanud. Tagasihelistamisfunktsioonid sobivad selleks suurepäraselt ja sellega tegeleme hiljem.