Comparing version 0.0.4 to 0.0.5
@@ -20,7 +20,7 @@ var Channel = require('../').Channel; | ||
go(function* (ch3) { | ||
db1.query('SELECT 1', ch1); | ||
db2.query('SELECT 3', ch3); | ||
var r5 = yield ch1; | ||
var r6 = yield; | ||
chan(null, r5[0] + r6[0]); | ||
db1.query('SELECT 1', bind(ch3, 'r5')); | ||
db2.query('SELECT 3', bind(ch3, 'r6')); | ||
var rx = yield; | ||
var ry = yield; | ||
chan(null, rx[0] + ry[0]); | ||
}); | ||
@@ -27,0 +27,0 @@ yield; |
46
index.js
@@ -5,2 +5,3 @@ /* Copyright 2015, Wang Wenlin */ | ||
exports.go = go; | ||
exports.bind = bind; | ||
exports.then = then; | ||
@@ -23,7 +24,7 @@ | ||
// go(function* (ch3) { | ||
// db1.query('SELECT 1', ch1); | ||
// db2.query('SELECT 3', ch3); | ||
// var r5 = yield ch1; | ||
// var r6 = yield; | ||
// chan(null, r5[0] + r6[0]); | ||
// db1.query('SELECT 1', bind(ch3, 'r5')); | ||
// db2.query('SELECT 3', bind(ch3, 'r6')); | ||
// var rx = yield; | ||
// var ry = yield; | ||
// chan(null, rx[0] + ry[0]); | ||
// }); | ||
@@ -66,6 +67,17 @@ // yield; | ||
function go(machine) { | ||
var inst; | ||
var chan = Channel([]); | ||
var inst = machine(chan); | ||
var runq = chan; | ||
if (arguments.length <= 1) { | ||
inst = machine(chan); | ||
} else if (arguments.length <= 2) { | ||
inst = machine(chan, arguments[1]); | ||
} else { | ||
var l = arguments.length; | ||
var args = new Array(l - 1); | ||
for (var i = 1; i < l; i++) args[i-1] = arguments[i]; | ||
inst = machine.apply(null, [].concat(chan, args)); | ||
} | ||
(function loop() { | ||
@@ -93,2 +105,24 @@ for (;;) { | ||
function bind(chan, bind0) { | ||
var l = arguments.length; | ||
var binds = new Array(l - 1); | ||
for (var i = 1; i < l; i++) binds[i-1] = arguments[i]; | ||
return function (err_, arg0, arg1) { | ||
if (err_) { | ||
err_.extra = (binds.length <= 1) ? binds[0] : binds; | ||
chan(err_); | ||
} else if (arguments.length <= 2) { | ||
chan.apply(null, [].concat(err_, binds, arg0)); | ||
} else if (arguments.length <= 3) { | ||
chan.apply(null, [].concat(err_, binds, arg0, arg1)); | ||
} else { | ||
var l = arguments.length; | ||
var args = new Array(l - 1); | ||
for (var i = 1; i < l; i++) args[i-1] = arguments[i]; | ||
chan.apply(null, [].concat(err_, binds, args)); | ||
} | ||
} | ||
} | ||
function then(err, cb) { | ||
@@ -95,0 +129,0 @@ return function (err_, arg0, arg1) { |
{ | ||
"name": "gojs", | ||
"version": "0.0.4", | ||
"version": "0.0.5", | ||
"description": "go.js, Golang like channels and go.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -20,7 +20,7 @@ go.js, Golang like channels and go. | ||
go(function* (ch3) { | ||
db1.query('SELECT 1', ch1); | ||
db2.query('SELECT 3', ch3); | ||
var r5 = yield ch1; | ||
var r6 = yield; | ||
chan(null, r5[0] + r6[0]); | ||
db1.query('SELECT 1', bind(ch3, 'r5')); | ||
db2.query('SELECT 3', bind(ch3, 'r6')); | ||
var rx = yield; | ||
var ry = yield; | ||
chan(null, rx[0] + ry[0]); | ||
}); | ||
@@ -27,0 +27,0 @@ yield; |
5556
153