0.0.4 • Published 7 years ago

yield-runner-blue v0.0.4

Weekly downloads
1
License
ISC
Repository
-
Last release
7 years ago

yield-runner-blue

Install

$npm install yield-runner-blue

Introduction

This is a generator(yield) runner for ES6 script, like modern browser or Node.js

You can use this simply like this:

const runner=require('yield-runner-blue');

runner(function *(){
  var a=yield aaa();

  console.log(`I get a \'${a}\'`);
});

function aaa(){
  return new Promise((resolve, reject)=>{
    setTimeout(function (){
      resolve(12);
    }, 50);
  });
}

Error handling

Actually, the runner return a Promise object for task-tracing and error-handing, so you can do like this:

const runner=require('yield-runner-blue');

runner(function *(){
  var b=yield bbb();
  console.log(`I get a \'${b}\'`);

  var a=yield aaa();
  console.log(`I get a \'${a}\'`);
}).catch((err)=>{
  console.error('here is an error occurred: ', err.message);
});

function aaa(){
  return new Promise((resolve, reject)=>{
    setTimeout(function (){
      resolve(12);
    }, 50);
  });
}

function bbb(){
  return new Promise((resolve, reject)=>{
    setTimeout(function (){
      if(Math.random()<0.5){
        resolve(55);
      }else{
        reject(new Error('this is a testing error'));
      }
    }, 50);
  });
}

Task tracing

You can simply tracing task by using a then function, like Promise(This is just a Promise, Actually):

const runner=require('yield-runner-blue');

runner(function *(){
  var a=yield num1();
  var b=yield num2();

  return a+b;
}).then((res)=>{
  console.log(`The result is ${res}`);
  console.log();
}, (err)=>{
  console.error(err);
});

function num1(){
  return new Promise((resolve, reject)=>{
    resolve(5);
  });
}
function num2(){
  return new Promise((resolve, reject)=>{
    resolve(12);
  });
}

With other generator function

You can use this runner with another generator

const runner=require('yield-runner-blue');

function *gen(){
  var a=yield 12;
  var b=yield 5;

  return a+b;
}

runner(function* (){
  var num=yield gen;

  console.log(num);   //excepted 17
});

With other runner

You can use this runner together with other runners(like KOA), here is an example for KOA:

const koa=require('koa');
const runner=require('yield-runner-blue');

var app=koa();
app.listen(8080);

app.use(function *(){
  this.body=yield runner(show);
});

function* show(){
  return 12;
}

Community

If you like to discuss this module, you can send me a email:

blue@zhinengshe.com

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago