Async-steps (0.7.5) BETA
Что это?
Async-steps - node.js библиотека для написания последовательных блоков инструкций.
- Система написана на базе async-step.engine
- Для чего
- Похожие проекты
- Фичи и особенности
- Установка
- Инструкция по использованию
- Примеры
- Раздел asyncsteps в package.json
- Middleware
- API
Для чего?
Для различных систем мониторинга, парсинга или сборок.
Похожие проекты
- Grunt/gulp
- Puppet
- Ansible
Фичи и особенности
- Расширяемость - Модули изолированы от внешних фунций, что позволяет удобно расширять и дополнять систему.
- Гибкость в ассинхронности/синхронности - Все модули могут вызываться как последовательно, так и синхронно, простым флагом sync.
Установка
- Npm:
npm install --save async-steps
- Source git:
git clone https://github.com/Michael190996/async-steps && \
cd async-steps && \
npm i && \
npm run build # npm run prepublish
Инструкция по использованию
Расширяемость
Добавить модули можно в разделе asyncsteps файла package.json
"asyncsteps": {
"pathsToModules": [{
"prefix": "default",
"homeDir": false,
"path": "async-steps.modules-as"
}]
}
Импортируется деволтный массив объектов
export default [{
name: имя модуля,
fn: функция модуля
}]
Вызов модулей
import asyncSteps from 'async-steps';
const steps = [{
module: 'test'
}];
const as = asyncSteps(steps, /* configAsyncSteps */);
as.run()
.then(response => console.info(response))
.catch(err => console.error(err))
Примеры
Все в одном
import asyncSteps from 'async-steps';
const as = asyncSteps([{
module: 'test'
}]);
as.modular.add('test', (params, data, ns) => {
console.log(params, data, ns);
});
as.events.on('initSteps', (data, parentsNS) => {
console.log(data, parentsNS);
});
as.run('data')
.then(response => console.info(response))
.catch(err => console.error(err))
Раздел asyncsteps в package.json
- asyncsteps
- {object[]} [pathsToModules]
- {string} path - имя модуля или путь к директории с модулями
- {boolean} [homeDir] - берет модуль с библиотеки, либо с текущей директории
- {string} [prefix] - добавляет префикс к именам модулей
- {object[]} [pathsToModules]
Middleware
- Схема промежуточных функций (см).
- dataGet - добавляет данные с определенного шага
- timeout - задержка
- module - запускает указанный модуль
- after - функция, срабатывающая после завершения модуля
- dataSet - сохраняет результат
API
asyncSteps
Функция, возвращающая экземпляр класса AsyncStepsEngine
- import asyncSteps from 'async-steps'
- asyncSteps(steps, configAsyncSteps)
Classes-controllers
AsyncStepsEngine
Расширенный AsyncStepsEngine
- import AsyncStepsEngine from 'async-steps/dist/lib/AsyncStepsEngine'
-
AsyncStepsEngine(steps[, vars][, modular][, middleware][, events])
Namespace
Класс контекста, расширенный Namespace
- import Namespace from 'async-steps/dist/lib/Namespace'
-
Namespace(stepIndex, steps, parentsNamespace, modular, middleware, vars, events)
- stepIndex - индекс текущей позиции шага в steps
- steps
- {Array.<Namespace>} parentsNamespace
- [modular] - экземпляр класса Modular
- [events] - экземпляр класса Events
- [middleware] - экземпляр класса Middleware
- [vars] - экземпляр класса Vars
Events
Класс событий, расширенный Events
- import Events from 'async-steps/dist/lib/Events'
- Events()
-
.startWare(nameWare, data, namespace) {
- {string} nameWare
- {*} data
- namespace - экземпляр класса Namespace
- .on('startWare', function(data, namespace))
-
.endWare(nameWare, data, namespace)
- {string} nameWare
- {*} data
- namespace - экземпляр класса Namespace
- .on('endWare', function(data, namespace))
-
Modular
Класс, управляющий модулями
- import Modular from 'async-steps/dist/lib/Modular'
- Modular()
-
.modules - Возвращает модули
-
.add(name, fn[, prefix])
-
{string} name - уникальное имя модуля
-
{function} fn
- function([params][, data], namespace)
- {object} [params] - параметры соответствующего модуля
- {*} [data] - данные
- namespace - экземпляр класса Namespace
- function([params][, data], namespace)
-
{string} [prefix] - префикс модуля
-
-
.check(name[, prefix])
- {string} name - имя модуля
- {string} [prefix] - префикс модуля
-
.start(name[, prefix], params[, data], namespace)
- {string} name - имя модуля
- {string} [prefix] - префикс модуля
- {object} params - параметры модуля
- {*} [data] - данные
- namespace - экземпляр класса Namespace
-
Vars
Класс переменных
- import Vars from 'async-steps/dist/lib/Vars'
- Vars()
-
.add(key, value)
- {string} key
- {*} value
-
.remove(key)
- {string} key
-
.get(key)
- {string} key
-
.check(key)
- {string} key
-
Params
steps
- {object[step]} steps
step
- {object} step (см).
- {string} module - вызывает модуль
- {string} [name=default] - имя шага
- {string} [prefix=default] - префикс модуля
- {number} [timeout] - задержка перед модулем
- {string} [data] - данные соответствующего шага
- {boolean} [sync=false] - синхронность шага
- {function} [after] - функция, срабатывающая после модуля
- function after(data, namespace)
- результат функции при истинном значении записывается в data
- {function} [throwError] - функция, обрабатывающая исключения
- function throwError(error, namespace)
- {Error} error
- namespace - экземпляр класса Namespace
- результат функции при истинном значении записывается в data
- function throwError(error, namespace)