Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ atgalinio skambinimo funkcijas.
Funkcija yra kodo blokas, kuris atlieka tam tikrą užduotį, kai iškviečiamas. Pavyzdžiui,
// function function greet(name) ( console.log('Hi' + ' ' + name); ) greet('Peter'); // Hi Peter
Pirmiau pateiktoje programoje eilutės reikšmė perduodama kaip argumentas greet()
funkcijai.
„JavaScript“ taip pat galite perduoti funkciją kaip argumentą funkcijai. Ši funkcija, perduodama kaip argumentas kitos funkcijos viduje, vadinama atgalinio skambinimo funkcija. Pavyzdžiui,
// 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);
Rezultatas
Sveiki, Peter, esu atgalinio ryšio funkcija
Pirmiau pateiktoje programoje yra dvi funkcijos. Skambinant greet()
funkcijai, perduodami du argumentai (eilutės reikšmė ir funkcija).
callMe()
Funkcija yra skambinimo funkcijas.
Atgalinio skambučio funkcijos nauda
Atšaukimo funkcijos naudojimo pranašumas yra tas, kad galite palaukti ankstesnio funkcijos iškvietimo rezultato ir tada atlikti kitą funkcijos iškvietimą.
Šiame pavyzdyje mes ketiname naudoti setTimeout()
metodą, kad imituotume programą, kurios vykdymui reikia laiko, pavyzdžiui, duomenis, gaunamus iš serverio.
Pavyzdys: programa su 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');
Rezultatas
Sveiki, John Sveiki, pasauli
Kaip žinote, metodas setTimeout () po nurodyto laiko įvykdo kodo bloką.
Čia greet()
funkcija iškviečiama po 2000 milisekundžių ( 2 sekundžių). Šio laukimo metu sayName('John');
įvykdoma. Štai kodėl „Hello John“ spausdinamas prieš „Hello world“.
Minėtas kodas vykdomas asinchroniškai (antroji funkcija; sayName()
nelaukia pirmosios funkcijos; greet()
bus baigta).
Pavyzdys: skambinimo funkcijos naudojimas
Ankstesniame pavyzdyje antroji funkcija nelaukia, kol pirmoji funkcija bus baigta. Tačiau jei norite palaukti ankstesnio funkcijos iškvietimo rezultato, kol bus įvykdytas kitas sakinys, galite naudoti atgalinio skambinimo funkciją. Pavyzdžiui,
// 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);
Rezultatas
Sveikas pasaulis Sveikas Jonas
Minėtoje programoje kodas vykdomas sinchroniškai. sayName()
Funkcija perduodama kaip argumentą į greet()
funkciją.
setTimeout()
Metodas vykdo greet()
funkciją tik po 2 sekundžių. Tačiau sayName()
funkcija laukia funkcijos vykdymo greet()
.
Pastaba : atgalinio ryšio funkcija yra naudinga, kai reikia laukti rezultato, kuriam reikia laiko. Pavyzdžiui, duomenys gaunami iš serverio, nes reikia daug laiko, kol gaunami duomenys.