# 12: Funcții de apel invers - CSS-Tricks

Anonim

Favoritele tuturor: concept video timp! Callback-urile sunt un concept important în JavaScript. Sunt funcții care sunt apelate atunci când o acțiune a finalizat rularea. Apoi împrumutați codul nostru pentru structură și sincronizare.

Luați de exemplu animația pe care am folosit-o în ultimul videoclip. Animațiile durează să ruleze. Ce se întâmplă dacă doriți să se întâmple altceva chiar când se termină animația? Trebuie să faceți o setTimeoutpentru aceeași lungime ca și animația? Nu. jQuery ne oferă funcții de apel invers utilizate doar în acest scop.

Ele sunt, de obicei, un parametru suplimentar pe care îl transmitem metodei. În cazul animației, trecem o funcție ca ultim parametru. Aceasta este funcția de apel invers și va fi apelată când animația este finalizată.

$("#element").animate(( // stuff to animate ), function() ( // callback function ));

Poate că arată puțin ciudat, dar în esență facem doar:

.animate(a, b)

Unde aeste un obiect de proprietăți și valori și beste o funcție de apel invers.

Dar știm din ultimul videoclip că animația poate lua și un parametru de sincronizare care specifică cât va dura o animație. Unde merge asta? Acesta este un parametru opțional, la fel ca funcția de apel invers. Dacă am vrea să-l folosim, l-am pune chiar în mijloc, deci în esență:

.animate(propertiesObject, duration, callback);

Și există și un alt parametru opțional, un șir pe care îl putem trece pentru a specifica o valoare de relaxare.

.animate(propertiesObject, duration, easing, callback);

jQuery se întâmplă doar să fie cool și inteligent cu privire la acei parametri opționali. Dacă lăsați din mijlocul doi și treceți doar apelul invers, acesta poate spune că ceea ce transmiteți este o funcție, nu un număr sau un șir, deci știe că înseamnă o funcție de apel invers. Nu trebuie să transmiteți valori false sau altceva. Acesta este doar un design API bun!

Când priviți documentația jQuery, aceasta o arată astfel:

.animate (proprietăți (, durată) (, relaxare) (, complet))

Apoi, imediat după explicarea tipurilor așteptate.

Dar oricum, înapoi la apeluri de apel. Poți deveni destul de cuibărit. Imaginați-vă că puneți o altă animație în funcția de apel invers, iar acea animație are propria sa apelare inversă. Acest lucru este perfect rezonabil, deoarece ați putea dori să faceți o animație în mai mulți pași. Trebuie doar să rămâi organizat.

Vedeți Stiloul 450c5810be27a9a8946cb8012cbd1213 de Chris Coyier (@chriscoyier) pe CodePen

Folosim doar animația ca exemplu aici. Poate că o utilizare și mai obișnuită a funcțiilor de apel invers este Ajax. Ajax este atunci când browserul solicită o altă resursă fără a actualiza pagina. Acest lucru poate dura o perioadă de timp complet necunoscută. Depinde de lățimea de bandă și de latență și de dimensiunea fișierului și de condițiile de eroare și de tot felul de lucruri. Probabil că nu puteți face nimic cu acea solicitare Ajax până nu primiți ceva înapoi sau altfel mai multe informații. Funcțiile de apel invers sunt perfecte pentru asta și vom trece mai departe la asta.