Класс 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
$ npm install seq-exec --save
Фиксация изменений:
$ git add .
$ git commit -S -m "0.0.1"
$ git tag -s v0.0.1 -m 'signed 0.0.1 tag'
или
$ npm version patch
Отправка на github.com:
$ git push --tags origin master:master
Отправка на npmjs.com:
$ npm login
$ npm config ls
$ npm publish
ООП в 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
- docs.npmjs.com/misc/developers
- docs.npmjs.com/files/package.json
- spdx.org/licenses
- eladnava.com/publishing-your-first-package-to-npm
- gist.github.com/coolaj86/1318304#getting-started-with-npm-as-a-developer
Node.js:
JSLint:
Git: