Mam aplikacji węzeł, który nie aplikacja internetowa - to uzupełnia szereg zadań asynchronicznych przed powrotem 1. Bezpośrednio przed powrotem, wyniki programu są wypisywane na konsoli.Jak napisać funkcję node.js, która czeka na uruchomienie zdarzenia przed "zwróceniem"?
Jak mogę sprawdzić, czy wszystkie asynchroniczna praca jest zakończona przed powrotem? Udało mi się osiągnąć coś podobnego w aplikacji internetowej, upewniając się, że wszystkie zadania zostały zakończone przed wywołaniem res.end(), ale nie mam żadnego odpowiednika dla końcowego "zdarzenia", aby zadzwonić przed zezwoleniem na powrót skryptu.
Zobacz poniżej dla mojego (łamany) Funkcja Obecnie próbuje czekać aż callstack jest pusty. Właśnie odkryłem, że jest to rodzaj bezsensownego podejścia, ponieważ węzeł czeka na zakończenie procesu, zanim przejdzie do dowolnej asynchronicznej funkcji wywoływanej w processObjWithRef.
function processHub(hubFileContents){
var callStack = [];
var myNewObj = {};
processObjWithRef(samplePayload, myNewObj, callStack);
while(callStack.length>0){
//do nothing
}
return 1
}
Uwaga: Próbowałem wiele razy wcześniej, aby osiągnąć ten rodzaj zachowań z bibliotek takich jak async (patrz moja powiązane pytanie na How can I make this call to request in nodejs synchronous?), więc proszę wziąć odpowiedź i komentarze tam pod uwagę przed sugerując żadnych odpowiedzi na podstawie " po prostu użyj asynch ".
„Jak mogę sprawdzić, czy wszystkie asynchroniczna praca jest zakończona przed powrotem ? " Jest bezsensowne pytanie - kontrola nie jest zwracana do powłoki, dopóki wszystkie zadania asynchroniczne nie zostaną zakończone, więc pozostawienie wyjścia konsoli do momentu zakończenia ostatniej asynchronicznej funkcji naprawiło mój problem. Dziękuję wszystkim za przesłanie odpowiedzi. – Trindaz