JavaScript - Callbacks

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JavaScript - Callbacks

    Hallo Leute,

    ich arbeite mich gerade in Java Script ein und verstehe nicht warum folgender Code nicht läuft wie ich es gerne hätte:

    Quellcode

    1. function calculate (calback) {
    2. var result = 0;
    3. for(var i=1; i<=999999999;i++) result +=i;
    4. calback(result);
    5. }
    6. calculate(function(res){document.write(res)});
    7. document.write("<br/>" + "steht im Code nach dem Fuktionsaufruf, muesste aber vorher ausgegeben werden");


    Wie man sieht hat die calculate() Funktion einiges zu tun. Wenn sie fertig ist ruft sie die Callback-Funktion auf und gibt result aus. So möchte ich erreichen dass die Funktion asynchron aufgerufen wird und in der Zwischenzeit im Code fortgefahren wird. Dementsprechend erwarte ich dass die letzte Ausgabe oben im Code ausgegeben werden müsste bevor die Callback-Funktion aufgerufen wird. Leider ist das nicht der Fall und der Browser wird trotzdem geblockt. Dabei soll doch eben letzteres mit "Callbacks" verhindert werden.

    Habe ich irgendwo einen Fehler, oder was falsch verstanden?

    Hoffe es kann mir jemand helfen. Danke :)

    Gruß
    Daniel
    “I want to see an elephant hunt down a man for the sole purpose of collecting his teeth, while a chorus of typewriters sings songs that praises the bananas for their wisdom, leadership, and their high levels of potassium.” ― Jarod Kintz, I Want
  • Danke für die vielen Antworten.

    Dann hat mein Professor das etwas missverständlich formuliert in seinen Folien.

    Als Beispiel eines synchronen Funktionsaufrufs:
    osxentwicklerforum.de/index.ph…8be4829314c676231ee0325b9

    Und als Beispiel eines asynchronen Funktionsaufrufs:
    osxentwicklerforum.de/index.ph…8be4829314c676231ee0325b9

    Das ganze unter der Überschrift "Callbacks".
    Dann schreibt er noch:
    • Only with the availability of functions, an efficient processing of asynchronous events is possible
    • JS operates within one thread, blocking this thread with synchronous execution is undesirable
    • Callbacks are used e.g. as a function to be called if a procedure is completed, or if an event has occurred

    Hmm...

    Edit:
    Auf den Code ganz oben bezogen könnte man einen asynchronen Aufruf (wie schon von gritsch angedeutet) mit setTimeout() erreichen:

    Quellcode

    1. function calculate (calback) {
    2. setTimeout(function () {
    3. var result = 0;
    4. for(var i=1; i<=999999999;i++) result +=i;
    5. calback(result);
    6. }, 5000);
    7. }
    8. calculate(function(res){document.write(res)});
    9. document.write("<br/>" + "steht im Code nach dem Fuktionsaufruf, muesste aber vorher ausgegeben werden");
    Alles anzeigen


    (Mir ist klar dass das noch nichts mit Nebenläufigkeit zu tuen hat)
    “I want to see an elephant hunt down a man for the sole purpose of collecting his teeth, while a chorus of typewriters sings songs that praises the bananas for their wisdom, leadership, and their high levels of potassium.” ― Jarod Kintz, I Want

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Daniel2 ()