Jak radzić sobie z funkcjami asynchronicznymi, gdy naprawdę chcesz synchronizować rzeczy

16

Jestem dość nowy w NodeJS i trudno mi się skupić na asynchronicznej naturze funkcji, kiedy naprawdę chcę, aby jedno połączenie śledziło drugie w sposób zsynchronizowany.

Powiedzmy na przykład, że dzwonię do metod usług sieciowych. Każda metoda ma funkcję wywołania zwrotnego. Ale co, jeśli chcę zadzwonić do 10 z nich w określonej kolejności? Czy naprawdę muszę połączyć wszystkie funkcje w pierwszym wywołaniu zwrotnym? Co jeśli drugi raz łańcuch będzie nieco inny?

Czy są jakieś eleganckie wzory do radzenia sobie w sytuacjach, w których naprawdę chcesz, aby rzeczy były synchroniczne?

Czy powinienem naprawdę porzucić takie programowanie, aby przyzwyczaić się do innego sposobu myślenia? Jeśli to prawda, może ktoś wskaże mi czysty przykład dłuższego łańcucha funkcji za pomocą wywołań zwrotnych ...

Thijs Koerselman
źródło
10 żądań w określonej kolejności. Czy są od siebie niezależni?
Jonas,
1
I uwaga: połączone w łańcuch nie oznacza, że ​​nie jest asynchroniczne, chyba że wszystko jest połączone w tym łańcuchu.
Erik Reppen

Odpowiedzi:

9

Ludzie zwykle używają do tego Step lub Async . Sprawdź je, istnieje wiele fajnych samouczków na ich temat, zobaczysz, że przychodzą „do resque:”

http://dailyjs.com/2011/11/14/popular-control-flow/
http://dailyjs.com/2011/11/07/code-review/
http://howtonode.org/step-of- konduktor

Sprawdź również 2 odpowiedzi:

/programming/6954588/what-is-the-best-control-flow-module-for-node-js
/programming/5265743/node-js-what-techniques -are-there-for-writing-clean-simple-call-code-code

alessioalex
źródło
Cieszę się, że mogłem pomóc!
1
Z pewnością doceniam ten link, który podałeś!
Lonnie Best