JavaScript:n paluut
"I will call back later!"
Takaisin kutsu (callback) on toinen funktio, joka annetaan parametrina toiselle funktiolle
Tämä tekniikka mahdollistaa funktion kutsun toista funktiota
Takaisin kutsuun perustuvat funktiot voivat suorittaa toisen funktion loppuunsaattuaan
Funktioserkki
JavaScript-funktiot suoritetaan niiden kutsujärjestyksessä, ei niiden määrittämisjärjestyksessä.
Tämä esimerkki näyttää lopulta "Goodbye":
esimerkki
function myFirst() { myDisplayer("Hello"); } function mySecond() { myDisplayer("Goodbye"); } myFirst(); mySecond();
Tämä esimerkki näyttää lopulta "Hello":
esimerkki
function myFirst() { myDisplayer("Hello"); } function mySecond() { myDisplayer("Goodbye"); } mySecond(); myFirst();
Järjestyshallinta
Joskus haluat hallita paremmin, milloin suoritat funktion.
Oletetaan, että aiot tehdä laskelman ja näyttää tuloksen.
Voit kutsua laskimen toiminnan (myCalculator
) tallentaa tuloksen ja sitten kutsu toista funktiota (myDisplayer
) näyttääksesi tuloksen:
esimerkki
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2) { let sum = num1 + num2; return sum; } let result = myCalculator(5, 5); myDisplayer(result);
Tai voit kutsua laskimen toiminnan (myCalculator
),ja anna laskimen toiminnan kutsua näyttämään toiminnon (myDisplayer
):
esimerkki
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2) { let sum = num1 + num2; myDisplayer(sum); } myCalculator(5, 5);
Yllä olevan ensimmäisen esimerkin ongelma on, että sinun täytyy kutsua kahta funktiota näyttääksesi tuloksen.
Toisen esimerkin ongelma on, että et voi estää laskimen toiminnan näyttämistä tulosta.
Nyt on aika esitellä takaisin kutsu.
JavaScript:n paluut
Takaisin kutsu on toinen funktio, joka annetaan parametrina toiselle funktiolle。
Käyttämällä takaisin kutsua voit kutsua laskimen toiminnan takaisin kutsulla:myCalculator
),laskettuaan laskimen toiminnan takaisin kutsuun:
esimerkki
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2, myCallback) { let sum = num1 + num2; myCallback(sum); } myCalculator(5, 5, myDisplayer);
Yllä olevassa esimerkissä myDisplayer
on funktion nimi.
se toimii parametrina myCalculator()
.
Kun siirrät funktion parametrina, muista olla käyttämättä sulkeita.
Oikein: myCalculator(5, 5, myDisplayer);
Virhe: myCalculator(5, 5, myDisplayer());
Milloin käyttää paluutoimintoja?
Yllä oleva esimerkki ei ole kovin jännittävä.
Ne on yksinkertaistettu, jotta voitaisiin selittää paluutoimintojen syntaksia.
Paluutoiminnot loistavat todella asynkronisissa funktioissa, joissa yksi funktio on pakotettu odottamaan toisen funktioita (esim. odottamaan tiedoston lataamista).
Seuraavassa luvussa esitellään asynkroniset funktiot.