seq-exec
v0.0.1
Published
Скрипт для организации последовательного исполнения JS-функций посредством механизма обратного вызова.
Downloads
2
Readme
Класс SeqExec и его методы
Файл seq-exec.js содержит класс SeqExec предназначенный для организации последовательного исполнения JS-функций посредством механизма обратного вызова.
Методы класса SeqExec:
| Название метода | Описание | | ----------------------- | -------------------------------------------------------------------------------- | | chain | Позволяет объединить функции в цепочку из последовательно выполняющихся функций. | | loop | Позволяет последовательно выполнить серию повторяющихся операций. |
Примеры
Простой пример: цепочка последовательно выполняющихся функций
В нижеприведённом примере ключевую роль играет вызов функции next(), только после которого происходит переход к исполнению следующей функции:
SeqExec.chain(function (next) {
console.log("1");
next(); // перейти к исполнению следующей функции в цепочке
}).then(function (next) {
console.log("2");
next(); // перейти к исполнению следующей функции в цепочке
}).then(function (next) {
console.log("3");
});
Вывод:
$ node example1.js
Example 1:
1
2
3
Простой пример: циклы
В качестве простого примера, демонстрирующего суть метода SeqExec.loop(loopBodyCallback, stopConditionCallback) можно привести альтернативную реализацию циклов для JavaScript, без использования конструкций for и while:
var idx = 1;
SeqExec.loop(function loopBody(cont) {
console.log(idx);
idx += 1;
cont(); // continue
}, function stopCondition() {
return idx > 10 ? true : false;
});
Вывод:
$ node example2.js
Example 2:
1
2
3
4
5
6
7
8
9
10
Дополнительные пояснения к коду
ООП в JavaScript:
Синхронность и асинхронность в JavaScript:
- stackoverflow.com/questions/2035645/when-is-javascript-synchronous
- stackoverflow.com/questions/5187968/how-should-i-call-3-functions-in-order-to-execute-them-one-after-the-other
- stackoverflow.com/questions/1859185/how-to-force-sequential-javascript-execution
Промисы:
npm:
- docs.npmjs.com/getting-started/publishing-npm-packages
- eladnava.com/publishing-your-first-package-to-npm
- gist.github.com/coolaj86/1318304#getting-started-with-npm-as-a-developer
Node.js:
JSLint: