https://github.com/frux/seenk
Flow controller for node.js
https://github.com/frux/seenk
Last synced: 4 months ago
JSON representation
Flow controller for node.js
- Host: GitHub
- URL: https://github.com/frux/seenk
- Owner: frux
- Created: 2015-10-08T20:32:47.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-12-29T12:51:43.000Z (over 10 years ago)
- Last Synced: 2025-10-20T06:57:38.130Z (8 months ago)
- Language: JavaScript
- Size: 7.81 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# seenk [](https://travis-ci.org/frux/seenk)
Flow controller for node.js
## Run tests
``npm i``
``npm test``
## Install
``npm i seenk``
## Use
Let we have some async function named blaBlaBla returning Promise.
```js
function blaBlaBla(text, delay){
delay = Number(delay) || 0;
return new Promise(function(resolve, reject){
setTimeout(function(){
resolve(text);
}, delay);
});
}
```
### Seenk(generatorFunction) : Promise
If you need some async functions to be executed synchronously you should wrap it by generator function and use Seenk:
```js
Seenk(function*(){
var greeting = '';
greeting += (yield blaBlaBla('Hello', 100)) +
(yield blaBlaBla(' ', 300)) +
(yield blaBlaBla('World', 300)) +
(yield blaBlaBla('!'));
return greeting;
})
```
All of this blaBlaBla will be executed by turns.
Also Seenk returns you a Promise to allow you getting result of generator function.
```js
Seenk(function*(){
var greeting = '';
greeting += (yield blaBlaBla('Hello', 100)) +
(yield blaBlaBla(' ', 300)) +
(yield blaBlaBla('World', 300)) +
(yield blaBlaBla('!'));
return greeting;
}).then(function(greeting){
console.log(greeting);
});
```
This outputs ``Hello World!`` into console after 700ms.
### Seenk(Array) : Promise
If you need to get results of some independent async functions running parallely
```js
Seenk([
blaBlaBla('Hello', 100),
blaBlaBla(' ', 200),
blaBlaBla('World', 300),
blaBlaBla('!', 500)
])
```
Seenk will return you a Promise which will resolve ``Hello World!`` in 500ms after the longest delay will pass.
### Seenk.wrap(generatorFunction) : Function
```js
var wrapped = Seenk.wrap(function*(){
var message = '';
message += (yield blaBlaBla('Wrap', 100)) +
(yield blaBlaBla(' ', 200)) +
(yield blaBlaBla('me', 300)) +
(yield blaBlaBla('!'));
return message;
})
```
And now you have function ``wrapped`` returning Promise.