gco

1.1.14 • Public • Published

gco

Generator based flow-control that supports promises.

build status coverage status npm version npm downloads dependency status devDependency status

Sauce Test Status

Motivation

Developed for a specific use-case, and for learning purposes. Heavily inspired by co, which I recommend using if you're after a more feature-rich and battle-tested solution 😃. You'll see co's influence in the documentation, API, and unit tests.

Compatibility

Babel is used to transpile ES2015 to ES5. gco is tested against:

  • The latest stable Node.js release
  • The latest LTS Node.js release
  • The browsers listed in the build matrix above.

Installation

$ npm i gco

Usage

import gco from 'gco';
 
const onError = ({ stack }) => console.error(stack);
 
// Yield any promise.
gco(function* () {
  const result = yield Promise.resolve(true);
  console.log(result);
  // -> true
}).catch(onError);
 
// Yield an array to resolve multiple promises in parallel.
gco(function* () {
  const a = Promise.resolve(1);
  const b = Promise.resolve(2);
  const c = Promise.resolve(3);
  const result = yield [a, b, c];
  console.log(result);
  // -> [1, 2, 3]
}).catch(onError);
 
// Yield an object to resolve multiple promises in parallel.
gco(function* () {
  const res = yield {
    1: Promise.resolve(1),
    2: Promise.resolve(2),
  };
  console.log(res);
  // -> { 1: 1, 2: 2 }
}).catch(onError);
 
// Errors can be try/catched.
gco(function* () {
  try {
    yield Promise.reject(new Error('boom'));
  } catch (error) {
    console.error(error.message);
    // -> 'boom'
  }
}).catch(onError);

To run the above examples:

$ npm run example -s

API

gco(fn*).then(value =>)

Returns a promise that resolves a generator.

Tests

$ npm run test:local

License

MIT

Package Sidebar

Install

npm i gco

Weekly Downloads

5

Version

1.1.14

License

MIT

Last publish

Collaborators

  • tanem