Класс 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: