Добрый день. Есть nodejs приложение. Не использующее как сервер. Приложение работает с базами, api для подготовки информации в базе для основного приложение. Приложение демонизированно с помощью pm2.
Есть непонятка в организации глобальной логики.
В приложение созданы модули, один для обработки базы, другой для работы с api и т.д. Запускаю их через главный файл приложения app.js там и планирую всё логику построить (глобальную, что когда запускать). Пока не могут понять как правильно организовать логику, так как нужно запускаемые функции запускать по очереди, другие прерывать на время выполнения других, думаю использовать Eventemitter, если случилось событие запускает эту функцию, остальные прерываем (тупо в модулях сделать return функции выполняющую работу в данный момент) может есть еще какие то способы организовать это дело?
Стоит ли функции, которые запускаю делать в виде chilprocces или можно без него запускать параллельно несколько функций для обработки.
Вы меня не поняли немного, я использую промисы и генераторы нативные, у меня проблемка так как приложение работает ни как сервер, а как приложение которое обслуживает базу данных, работает с api других систем, запускает множество процессов, типа взять с одной коллекции данные обработать, перенести в другую, получить данные с api сервиса. Мне надо как то организовать запуск этих процессов(модулей/функций) и контролировать их. Сами процессы(модули) уже сделаны, надо как то организовать их запуск, прерывание, контроль.
Ну так, все верно я предоставил инструмент для реализации задачи. Т.е. с помощью данной библиотеки выбирается соответствующий паттерн и реализуется для конкретной ситуации. Поскольку пример абстрактный ничего конкретнее я посоветовать не могу.
Да и потом в любом случае придется работать с событиями, просто вопрос в том на каком уровне это будет происходить.
Code Keeper: для задачи топикстартера async не подходит совсем, особенно, если он начнет разносить модули по разным chilprocces.
livemirsi: вам только если строить очередь выполнения, смотрите как реализован тот же selenium-webdriver для node.js, там есть queueTasks. Задачи выполняются из этой очереди последовательно (очередь можно создать через промисс-цепочки), но элементом очереди не обязательно должен быть один промис, можно использовать Promise.all([]) для случаев параллельного выполнения.