Comparing version 0.1.0 to 0.1.1
'use strict'; | ||
var gensy = require('./main.js'); | ||
var count = 0; | ||
setInterval(function () { | ||
console.log('alive'); | ||
}, 1000); | ||
function foo(callback) { | ||
setTimeout(function () { | ||
if (++count == 2) { | ||
return callback('second must crash'); | ||
} | ||
callback(null, 'hello'); | ||
@@ -12,12 +20,6 @@ }, 1000); | ||
function* gen1(next, end) { | ||
try { | ||
console.log('1a'); | ||
var x = yield foo(next); | ||
console.log('1b', x); | ||
x = yield foo(next); | ||
console.log('1c', x); | ||
return end(); | ||
} catch (err) { | ||
console.warn('error occurred:', err); | ||
} | ||
console.log('1a'); | ||
var x = yield foo(next); | ||
console.log('1b', x); | ||
return end(null, 1); | ||
} | ||
@@ -30,14 +32,21 @@ | ||
console.log('2b', x); | ||
return end(); | ||
} catch (err) { | ||
console.warn('error occurred:', err); | ||
return end(null, 2); | ||
} catch (error) { | ||
console.log('handled error:', error); | ||
} | ||
} | ||
function* gen3(next, end) { | ||
console.log('3a'); | ||
var x = yield foo(next); | ||
console.log('3b', x); | ||
return end(null, 3); | ||
} | ||
gensy(gen1, function () { | ||
console.log('single run finished'); | ||
gensy.series([gen1, gen2], function () { | ||
console.log('series run end'); | ||
count = 0; | ||
gensy.series([gen1, gen2, gen3], function (error, result) { | ||
console.log('series run end', error, result); | ||
}); | ||
}); |
19
main.js
@@ -19,3 +19,9 @@ 'use strict'; | ||
function next(error, result) { | ||
if (error) return x.throw(error); | ||
if (error) { | ||
x.throw(error); | ||
if (callback) { | ||
callback(error); | ||
} | ||
return; | ||
} | ||
x.next(result); | ||
@@ -34,8 +40,15 @@ } | ||
gensy.series = function (generators, callback) { | ||
var results = []; | ||
function runNext() { | ||
var g = generators.shift(); | ||
if (!g) { | ||
return callback(); | ||
return callback(null, results); | ||
} | ||
gensy(g, runNext); | ||
gensy(g, function (error, result) { | ||
if (error) { | ||
return callback(error); | ||
} | ||
results.push(result); | ||
return runNext(); | ||
}); | ||
} | ||
@@ -42,0 +55,0 @@ runNext(); |
{ | ||
"name": "gensy", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"description": "Asynchronous utils focused on generators", | ||
@@ -5,0 +5,0 @@ "keywords": ["asynchrony", "callback", "generator", "es6", "async"], |
6244
98