csp
Version:
Communicating sequential processes for node. Go style concurrency with channels.
37 lines (27 loc) • 645 B
JavaScript
var fs = require("fs");
var csp = require("..");
var chan1 = new csp.Chan();
var read = csp.wrap(fs.readFile);
csp.spawn(function* () {
try {
var src = yield read(__filename, { encoding: "utf-8" })
, lines = src.split("\n");
} catch (e) {
yield chan1.put(null);
return console.log("Error: " + e.message);
}
for (var i = 0; i < lines.length; i++) {
yield chan1.put(lines[i]);
}
yield chan1.put(null);
});
csp.spawn(function* () {
var count = 0
, line = "";
for (;;) {
line = yield chan1.take();
if (line === null) { break; }
count += 1;
}
console.log("Line count " + count);
});