JavaScriptin takaisinsoittotoiminto

Sisällysluettelo

Tässä opetusohjelmassa opit JavaScript-soittopyynnöistä esimerkkien avulla.

Funktio on koodilohko, joka suorittaa tietyn tehtävän, kun sitä kutsutaan. Esimerkiksi,

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

Yllä olevassa ohjelmassa merkkijonoarvo välitetään argumenttina greet()funktiolle.

JavaScriptissä voit myös välittää funktion argumenttina funktiolle. Tätä funktiota, joka välitetään argumenttina toisen funktion sisällä, kutsutaan soittopyynnöksi. Esimerkiksi,

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

Tuotos

 Hei Peter Olen takaisinsoittotoiminto

Yllä olevassa ohjelmassa on kaksi toimintoa. Kun kutsutaan greet()funktiota, kaksi argumenttia (merkkijonoarvo ja funktio) välitetään.

callMe()Toiminto on takaisinkutsufunktio.

Takaisinsoittotoiminnon etu

Takaisinsoittotoiminnon käytön etuna on, että voit odottaa edellisen toimintopuhelun tulosta ja suorittaa sitten toisen toimintopuhelun.

Tässä esimerkissä aiomme käyttää setTimeout()menetelmää matkimaan ohjelmaa, jonka suorittaminen vie aikaa, kuten palvelimelta tulevia tietoja.

Esimerkki: Ohjelma setTimeout () -ohjelmalla

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

Tuotos

 Hei John Hei maailma

Kuten tiedät, menetelmä setTimeout () suorittaa koodilohkon määritetyn ajan kuluttua.

Tässä greet()funktiota kutsutaan 2000 millisekunnin ( 2 sekunnin) kuluttua. Tämän odotuksen aikana sayName('John');suoritetaan. Siksi Hello John on painettu ennen Hello world.

Yllä oleva koodi suoritetaan asynkronisesti (toinen toiminto; sayName()ei odota ensimmäisen toiminnon greet()päättymistä).

Esimerkki: Soittotoiminnon käyttäminen

Edellä olevassa esimerkissä toinen toiminto ei odota ensimmäisen toiminnon olevan valmis. Jos kuitenkin haluat odottaa edellisen funktion kutsun tulosta ennen seuraavan käskyn suorittamista, voit käyttää soittopyyntötoimintoa. Esimerkiksi,

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

Tuotos

 Hei maailma Hei John

Yllä olevassa ohjelmassa koodi suoritetaan synkronisesti. sayName()Toiminto välitetään argumentti, että greet()toiminto.

setTimeout()Menetelmä suorittaa greet()toiminnon vasta, kun 2 sekunnin. Kuitenkin sayName()toiminto odottaa suorittamisen greet()funktion.

Huomautus : Soittotoiminnosta on hyötyä, kun joudut odottamaan aikaa vievää tulosta. Esimerkiksi palvelimelta tulevat tiedot, koska tietojen saapuminen vie aikaa.

Mielenkiintoisia artikkeleita...