Jak wykonać funkcję Javascript tylko po zakończeniu wielu innych funkcji?

Mój specyficzny problem polega na tym, że muszę wykonać (potencjalnie) dużą liczbę funkcji JavaScript, aby przygotować coś takiego jak plik wsadowy (każde wywołanie funkcji dodaje pewne informacje do tego samego pliku wsadowego), a następnie, po zakończeniu wszystkich tych połączeń, wykonać ostatnia funkcja, aby wysłać plik wsadowy (powiedz, wyślij go jako odpowiedź HTML). Szukam ogólnego schematu programowania Javascript.

Uogólnij problem: Biorąc pod uwagę funkcje JavaScript funcA (), funcB () i funcC (), powinienem znaleźć najlepszy sposób na zamówienie wykonania, aby funcC zostało wykonane dopiero po wykonaniu funcA i funcB. Wiem, że mogę użyć zagnieżdżonych funkcji wywołania zwrotnego, takich jak:

funcA = function() {
    //Does funcA stuff
    funcB();
}
funcB = function() {
    //Does funcB stuff
    funcC();
}

funcA();

Mogłem nawet uczynić ten wzorzec trochę bardziej ogólnym, przekazując parametry wywołania zwrotnego, jednak to rozwiązanie staje się dość gadatliwe.

Jestem również zaznajomiony z łączeniem funkcji JavaScript, gdzie może wyglądać rozwiązanie:

myObj = {}
myObj.answer = ""
myObj.funcA = function() {
    //Do some work on this.answer
    return this;
}
myObj.funcB = function() {
    //Do some more work on this.answer
    return this;
}
myObj.funcC = function() {
    //Use the value of this.answer now that funcA and funcB have made their modifications
    return this;
}
myObj.funcA().funcB().funcC();

Chociaż to rozwiązanie wydaje mi się trochę czystsze, ponieważ dodając kolejne kroki do obliczeń, łańcuch wykonywania funkcji rośnie coraz dłużej.

Dla mojego konkretnego problemu kolejność wykonywania funcA, funcB itp. NIE ma znaczenia. Tak więc w moich rozwiązaniach powyżej wykonuję technicznie więcej pracy niż jest to wymagane, ponieważ umieszczam wszystkie funkcje w zamówieniu seryjnym. Dla mnie liczy się tylko to, że funcC (jakaś funkcja do wysyłania wyniku lub odpalania żądania) jest wywoływana dopiero po wykonaniu przez funcA i funcB WSZYSTKICH. W idealnej sytuacji funcC mógłby w jakiś sposób nasłuchiwać wszystkich wywołań funkcji pośrednich do wykonania i THEN? Mam nadzieję nauczyć się ogólnego wzorca Javascript, aby rozwiązać taki problem.

Dzięki za pomoc.

Inna idea: Może przekazać obiekt udostępniony do funcA i funcB, a kiedy zakończą wykonanie, zaznacz współdzielony obiekt, taki jak sharedThing.funcA = "complete" lub sharedThing.funcB = "complete", a następnie jakoś? wykonaj funcC, gdy obiekt udostępniony osiągnie stan, w którym wszystkie pola są oznaczone jako kompletne. Nie jestem pewien, jak dokładnie mógłbyś poczekać na funcC.

Edycja: Powinienem zauważyć, że używam Javascript po stronie serwera (Node.js) i chciałbym nauczyć się wzoru do rozwiązania za pomocą zwykłego starego Javascript (bez użycia jQuery lub innych bibliotek). Z pewnością ten problem jest na tyle ogólny, że istnieje czyste rozwiązanie czysto Javascript?

questionAnswers(6)

yourAnswerToTheQuestion