U ovom ćete uputstvu uz primjere naučiti o funkcijama povratnog poziva JavaScripta.
Funkcija je blok koda koji izvršava određeni zadatak kada se pozove. Na primjer,
// function function greet(name) ( console.log('Hi' + ' ' + name); ) greet('Peter'); // Hi Peter
U gore navedenom programu vrijednost niza se prenosi kao argument greet()
funkciji.
U JavaScriptu funkciju možete proslijediti i kao argument funkciji. Ova funkcija koja se prosljeđuje kao argument unutar druge funkcije naziva se povratna funkcija. Na primjer,
// function function greet(name, callback) ( console.log('Hi' + ' ' + name); callback(); ) // callback function function callMe() ( console.log('I am callback function'); ) // passing function as an argument greet('Peter', callMe);
Izlaz
Bok Peter, ja sam funkcija povratnog poziva
U gornjem programu postoje dvije funkcije. Tijekom pozivanja greet()
funkcije prenose se dva argumenta (vrijednost niza i funkcija).
callMe()
Funkcija je funkcija povratnog poziva.
Prednost funkcije povratnog poziva
Prednost upotrebe funkcije povratnog poziva je ta što možete pričekati rezultat prethodnog poziva funkcije, a zatim izvršiti drugi poziv funkcije.
U ovom ćemo primjeru setTimeout()
metodom oponašati program kojem je potrebno vrijeme za izvršavanje, poput podataka koji dolaze s poslužitelja.
Primjer: Program s setTimeout ()
// program that shows the delay in execution function greet() ( console.log('Hello world'); ) function sayName(name) ( console.log('Hello' + ' ' + name); ) // calling the function setTimeout(greet, 2000); sayName('John');
Izlaz
Pozdrav John Pozdrav svijete
Kao što znate, metoda setTimeout () izvršava blok koda nakon navedenog vremena.
Ovdje se greet()
funkcija poziva nakon 2000 milisekundi ( 2 sekunde). Tijekom ovog čekanja sayName('John');
izvršava se. Zbog toga je Hello John tiskan prije Hello world.
Gornji se kôd izvršava asinkrono (druga funkcija; sayName()
ne čeka prvu funkciju; greet()
da se završi).
Primjer: Korištenje funkcije povratnog poziva
U gornjem primjeru druga funkcija ne čeka da prva funkcija bude dovršena. Međutim, ako želite pričekati rezultat prethodnog poziva funkcije prije izvršavanja sljedeće naredbe, možete koristiti funkciju povratnog poziva. Na primjer,
// Callback Function Example function greet(name, myFunction) ( console.log('Hello world'); // callback function // executed only after the greet() is executed myFunction(name); ) // callback function function sayName(name) ( console.log('Hello' + ' ' + name); ) // calling the function after 2 seconds setTimeout(greet, 2000, 'John', sayName);
Izlaz
Pozdrav svijetu Pozdrav John
U gornjem programu kôd se izvršava sinkrono. sayName()
Funkcija je prošao kao argument u greet()
funkciji.
setTimeout()
Metoda izvršava greet()
funkcije samo nakon 2 sekunde. Međutim, sayName()
funkcija čeka izvršenje greet()
funkcije.
Napomena : Funkcija povratnog poziva korisna je kad morate pričekati rezultat koji zahtijeva vrijeme. Na primjer, podaci koji dolaze s poslužitelja jer treba vremena da podaci stignu.