Как мне использовать принудительную синхронизацию в node.js? - PullRequest
1 голос
/ 15 января 2012

Я знаю, что асинхронность - это половина цели node.js и что она действительно великолепна и эффективна. Однако в некоторых ситуациях этот шаблон программирования является просто излишним и сложным. Например, что если вы захотите написать скрипт, который принимает некоторые пользовательские данные и использует их для создания строки MySQL и ее сохранения (я только что сделал это). Действительно раздражает необходимость создавать отдельную функцию для каждого крошечного шага программы, а затем заставлять их всех вызывать друг друга подряд.

Так, как вместо этого должны обрабатываться такие ситуации? Я попробовал step , но он не будет работать с coffee-script, так как он требует, чтобы функции были объявлены классическим способом (function foo() {/* Bar */}). Coffee-script вместо этого создает анонимные функции и назначает их локальным переменным (var foo = function() {/* Bar */})

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

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Попробуйте https://github.com/caolan/async

Список пакетов "Most Depended On" в http://search.npmjs.org/ дает представление о том, как приветствуются библиотеки внутри сообщества узлов. async находится на 7-м месте (зависит от 207 пакетов) ...

underscore    448
coffee-script 341
request       279
express       268
optimist      228
connect       207
async         207
colors        199
uglify-js     146
socket.io     140
redis         128
jade          117
jsdom         102
commander     101
mime           96

Избегайте библиотек, которые «не работают» с CoffeeScript; они беда.

0 голосов
/ 15 января 2012

Это зависит от того, что вы делаете, но некоторые из основных методов в Node.js имеют синхронные версии, такие как readFileSync .

Если вы имеете дело с методами, которые не имеют синхронной версии, вам следует поискать альтернативы для шага, например async.js .

...