Как работать с асинхронными функциями, когда вы действительно хотите, чтобы все было синхронизировано


16

Я довольно новичок в NodeJS, и мне трудно обдумать асинхронную природу функций, когда я действительно хочу, чтобы один вызов следовал за другим синхронизированным образом.

Скажем, например, я вызываю методы веб-службы. Каждый метод имеет функцию обратного вызова. Но что, если я хочу назвать 10 из них в определенной последовательности? Действительно ли мне нужно объединить все функции в первом обратном вызове? Что делать, если во второй раз цепь немного отличается?

Существуют ли какие-либо изящные шаблоны для ситуаций, когда вы действительно хотите, чтобы все было синхронно?

Или я действительно должен отпустить такой вид программирования, чтобы привыкнуть к другому образу мышления? Если это правда, возможно, кто-то может указать мне чистый пример более длинной цепочки функций, использующих обратные вызовы ...


10 запросов в определенной последовательности. Они независимы друг от друга?
Джонас

1
И обратите внимание: связь в цепочке не означает, что она не асинхронна, если все не связано в этой цепочке.
Эрик Реппен

Ответы:


9

Люди обычно используют Step или Async для этого. Проверьте их, есть много хороших уроков о них, вы увидите, что они приходят "в реку":

http://dailyjs.com/2011/11/14/popular-control-flow/
http://dailyjs.com/2011/11/07/code-review/
http://howtonode.org/step-of- проводник

Также проверьте эти 2 ответа:

/programming/6954588/what-is-the-best-control-flow-module-for-node-js
/programming/5265743/node-js-what-techniques -Вы-там для написания очищаемые-простой обратный вызов кода


Рад, что смог помочь!

1
Я очень благодарен за предоставленную вами ссылку!
Лонни Бест
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.