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

Kokeile itse

Tämä esimerkki näyttää lopulta "Hello":

esimerkki

function myFirst() {
  myDisplayer("Hello");
}
function mySecond() {
  myDisplayer("Goodbye");
}
mySecond();
myFirst();

Kokeile itse

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

Kokeile itse

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

Kokeile itse

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

Kokeile itse

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.