Sequentielle Funktionsaufrufe in javascript

Möchte ich Eine Funktion die Ausführung beendet und nur nach, dass die Funktion B start-ausführen. Wenn ich rufen Sie die Funktion A und Funktion B, es scheint, beide gleichzeitig ausgeführt werden. Und nach der Funktion B beendet ist, möchte ich nennen, eine Dritte Funktion update_dropdown().

Mein code sieht wie folgt aus:

function A {
    for (var i = 0; i < 5; i++) {
        var promise = $.get(url+i);
        $.when(promise).then(function () {
            $.post(url);
        });
    }
}
function B {
    var x = $.get(url);
    var promise = $.post(url+x);
    $.when(promise0).then(function () {
        update_dropdown();
    });
}

Bitte können Sie mir sagen, wie ich diese 3 Funktionsaufrufe passieren hintereinander.

  • Nicht ganz sicher, was Ihr Ziel ist, können Sie erklären, ein wenig mehr?
  • Vorausgesetzt: 1. Sie rufen Eine Funktion, möchten Sie warten, für die $.Holen Sie abgeschlossen ist, dann den Sie anrufen möchten, Funktion B, und schließlich, wenn B abgeschlossen ist, die Sie anrufen möchten update_dropdown()?
  • Wenn Sie möchten, eine genaue Antwort, Sie haben wirklich zu wissen, was Sie wollen, dass die aufrufsequenz zu werden. Dein code macht nicht eine ganze Menge Sinn (und es ist pseudo-code), so dass es nicht ganz klar, welche Reihenfolge Sie tatsächlich wollen, dass die Dinge geschehen. Zum Beispiel, in A(), wollen Sie fünf $.get() Operationen parallel und dann, wenn Sie alle komplett, ein $.post() Betrieb? In B(), tun Sie wirklich wollen, zu tun, ein $.get() und dann ohne zu warten, für nichts, tun ein $.post()?
  • Ja @Pepto Ihre Annahme richtig ist, "Sie rufen Eine Funktion, möchten Sie warten, für die $.Holen Sie abgeschlossen ist, dann den Sie anrufen möchten, Funktion B, und schließlich, wenn B abgeschlossen ist, die Sie anrufen möchten update_dropdown()"
  • In der Funktion-Ein, ich will 5 sequentielle get&post-Anfragen. Zunächst erhalten Sie dann post. Dies muss geschehen, 5x. Dann die Funktion-B, ausführen muss. In B gibt es einen einzigen $bekommen, von denen ich einige Wert, und dann nach diesem Wert. (sorry, dieser Teil ist nicht in meinem code verursacht einige Verwirrung gibt.) Dann rufen Sie die Funktion update_dropdown().
  • Tun die ersten 5 Anfragen bekommen, die dann posten, müssen serialisiert werden (2. legen Sie wartet für den 1. abgeschlossen ist)? Oder kann Sie laufen alle auf einmal und nur warten, bis alle von Ihnen getan werden, bevor Sie fortfahren?
  • Und die url im pseudo-code ... vermutlich ist es unterschiedlich? Ich sehe keinen Grund für den Aufruf der gleichen Ressource, die viele Male in dieser Weise.
  • ja die url ist unterschiedlich.
  • 1(get,post),2(get,post),3(get,post),4(get,post),5(get,post).
  • OK, damit ist die option 1 in meiner Antwort, wenn Sie wollen, dass Sie alle serialisiert. Es wäre schneller, führen Sie von Anfang bis Ende, wenn Sie laufen konnte jedes paar parallel, aber wenn #2-pair muss die Ergebnisse von #1 paar oder muss der server bereits verarbeitet #1 paar, dann würde es sequenziell sein.

Schreibe einen Kommentar