# seenk

> Flow controller powered by generators

Latest version **0.2.2** (published 2015-12-29) · WTFPL license · 0 weekly downloads

## Install

```sh
npm install seenk
pnpm add seenk
yarn add seenk
bun add seenk
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.2 |
| Published | 2015-12-29 |
| First published | 2015-10-12 |
| Weekly downloads | 0 |
| License | WTFPL |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Vladimir Kudinov |
| Maintainers | frux |
| Keywords | generators, seenk, async, flow |

## Links

- npm: https://www.npmjs.com/package/seenk
- Repository: https://github.com/frux/seenk
- Homepage: https://github.com/frux/seenk#readme
- Issues: https://github.com/frux/seenk/issues
- npm.io page: https://npm.io/package/seenk

## Alternatives

- [@commercetools/sync-actions](https://npm.io/package/@commercetools/sync-actions.md) — 25.1K weekly downloads
- [cwait](https://npm.io/package/cwait.md) — 21.4K weekly downloads
- [@ledgerhq/hw-app-cosmos](https://npm.io/package/@ledgerhq/hw-app-cosmos.md) — 4.2K weekly downloads
- [@financial-times/o-loading](https://npm.io/package/@financial-times/o-loading.md) — 2.8K weekly downloads
- [fa](https://npm.io/package/fa.md) — 185 weekly downloads

## Recent versions

- 0.2.2 (latest) — 2015-12-29
- 0.2.1 — 2015-10-13
- 0.2.0 — 2015-10-13
- 0.1.0 — 2015-10-12

## README

# seenk [![Build Status](https://travis-ci.org/frux/seenk.svg?branch=master)](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.

---
_Source: https://npm.io/package/seenk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
