Funkcija JavaScript CallBack

V tej vadnici boste s pomočjo primerov spoznali funkcije povratnega klica JavaScript.

Funkcija je blok kode, ki ob klicu izvede določeno nalogo. Na primer

 // function function greet(name) ( console.log('Hi' + ' ' + name); ) greet('Peter'); // Hi Peter

V zgornjem programu se vrednost niza posreduje kot argument greet()funkciji.

V JavaScript lahko funkcijo kot argument prenesete tudi kot argument. Ta funkcija, ki se posreduje kot argument znotraj druge funkcije, se imenuje funkcija povratnega klica. Na primer

 // 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);

Izhod

 Živjo Peter, jaz sem funkcija povratnega klica

V zgornjem programu sta dve funkciji. Med klicanjem greet()funkcije se posredujeta dva argumenta (vrednost niza in funkcija).

callMe()Funkcija je funkcija za povratni klic.

Prednost funkcije povratnega klica

Prednost uporabe funkcije povratnega klica je, da lahko počakate na rezultat prejšnjega klica funkcije in nato izvedete drug klic funkcije.

V tem primeru bomo setTimeout()metodo uporabili za posnemanje programa, za katerega je potreben čas, na primer za podatke, ki prihajajo s strežnika.

Primer: 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');

Izhod

 Pozdravljeni John Pozdravljeni svet

Kot veste, metoda setTimeout () po določenem času izvede blok kode.

Tu se greet()funkcija pokliče po 2000 milisekundah ( 2 sekundi). Med tem čakanjem sayName('John');se izvrši. Zato je Hello John natisnjen pred Hello world.

Zgornja koda se izvaja asinhrono (druga funkcija; sayName()ne čaka, da se prva funkcija greet()zaključi).

Primer: Uporaba funkcije povratnega klica

V zgornjem primeru druga funkcija ne čaka, da je prva funkcija popolna. Če pa želite počakati na rezultat prejšnjega klica funkcije, preden se izvede naslednji stavek, lahko uporabite funkcijo povratnega klica. Na primer

 // 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);

Izhod

 Pozdravljen svet Pozdravljen John

V zgornjem programu se koda izvaja sinhrono. sayName()Funkcija je minilo kot argument za greet()funkcijo.

setTimeout()Metoda izvede greet()funkcijo šele po 2 sekundah. Vendar sayName()funkcija čaka na izvedbo greet()funkcije.

Opomba : Funkcija povratnega klica je koristna, ko morate počakati na rezultat, ki zahteva čas. Na primer, podatki, ki prihajajo iz strežnika, ker traja čas, da podatki prispejo.

Zanimive Članki...