seenk

0.2.2 • Public • Published

seenk Build Status

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.

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:

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.

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

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

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.

Package Sidebar

Install

npm i seenk

Weekly Downloads

1

Version

0.2.2

License

WTFPL

Last publish

Collaborators

  • frux