JavaScripti tagasihelistamisfunktsioon

Lang L: none (table-of-contents)

Selles õpetuses saate näidete abil õppida JavaScripti tagasihelistamisfunktsioonide kohta.

Funktsioon on koodiplokk, mis täidab kutsumisel teatud ülesande. Näiteks,

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

Ülalolevas programmis edastatakse greet()funktsiooni argumendina stringi väärtus .

JavaScripti abil saate funktsiooni argumendina edastada ka funktsioonile. Seda funktsiooni, mis edastatakse argumendina teise funktsiooni sees, nimetatakse tagasihelistamisfunktsiooniks. Näiteks,

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

Väljund

 Tere Peter, ma olen tagasihelistamisfunktsioon

Ülaltoodud programmis on kaks funktsiooni. greet()Funktsiooni kutsumisel edastatakse kaks argumenti (stringi väärtus ja funktsioon).

callMe()Funktsioon on tagasihelistamise funktsioon.

Tagasihelistamise funktsiooni eelis

Tagasihelistamisfunktsiooni kasutamise eeliseks on see, et võite oodata eelmise funktsioonikõne tulemust ja seejärel täita teise funktsioonikõne.

Selles näites setTimeout()jäljendame meetodit programmi, mille käivitamine võtab aega, näiteks serverist pärinevate andmete jäljendamiseks.

Näide: programm koos 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');

Väljund

 Tere John Tere maailm

Nagu teate, käivitab meetod setTimeout () määratud aja möödudes koodiploki.

Siin greet()kutsutakse funktsiooni pärast 2000 millisekundit ( 2 sekundit). Selle ootamise ajal sayName('John');hukatakse. Sellepärast trükitakse Hello John enne Hello worldi.

Ülaltoodud kood täidetakse asünkroonselt (teine ​​funktsioon; sayName()ei oota esimese funktsiooni täitmist greet()).

Näide: tagasihelistamisfunktsiooni kasutamine

Ülaltoodud näites ei oota teine ​​funktsioon esimese funktsiooni valmimist. Kui soovite enne järgmise käsu täitmist oodata eelmise funktsioonikõne tulemust, võite kasutada tagasihelistamisfunktsiooni. Näiteks,

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

Väljund

 Tere maailm Tere John

Ülaltoodud programmis käivitatakse kood sünkroonselt. sayName()Funktsioon on möödas kui argumendi greet()funktsioon.

setTimeout()Meetodi hukatakse greet()funktsiooni alles pärast 2 sekundit. sayName()Funktsioon ootab aga funktsiooni täitmist greet().

Märkus . Tagasihelistamisfunktsioon on kasulik, kui peate ootama tulemust, mis võtab aega. Näiteks serverist pärinevad andmed, kuna andmete saabumine võtab aega.

Huvitavad Artiklid...