Как правильно выйти из скрипта node.js после того, как «все сделано»

Мой скрипт node.js читает строки из таблицы в базе данных 1, выполняет некоторую обработку и записывает строки в базу данных 2.

Сценарий должен завершиться после того, как все будет сделано.

Как я могу узнать, все ли сделано, и выйти из узла?

Если у меня есть callback-функция вроде этой:

function exit_node() {
  process.exit();
}

(Правка: тем временем стало очевидно, что process.exit() тоже можно заменить на db.close() - но вопрос не в том, что поставить Вопрос в том, в какое именно время это сделать, т.е. как и где выполнить этот callback.)

Но пристроить его куда-то непросто. Ведь последнее чтение из db1 некорректно, потому что еще должна произойти обработка и запись.

Присоединить его к записи в db2 непросто, потому что он должен быть присоединен после последней записи, но каждая запись независима и неизвестно, является ли она последней записью.

Теоретически также может случиться так, что последняя запись завершена, но другая запись перед ней все еще выполняется.


Редактировать: извините, я вижу, что объяснение вопроса не является полным и, вероятно, запутанным, но некоторые люди все же поняли, и ниже есть хорошие ответы. Пожалуйста, продолжайте читать комментарии и ответы, и это должно дать вам полную картину.


Редактировать: я мог бы придумать какой-нибудь «блокирующий» механизм контроллера.Различные части сценария добавляют блокираторы в контроллер для каждого открытого «задания» и освобождают их после завершения задания, а контроллер выходит из сценария, когда больше нет блокировщиков. Возможно, асинхронность могла бы помочь: https://github.com/caolan/async

Я также боюсь, что это взорвет код и неразумную логику.

9
задан SHernandez 4 September 2015 в 00:00
поделиться