parallel-es6
Version:
Complement for wait.for-es6: Sequential programming for node.js -and the browser-. End of callback hell - Original Wait.for, implemented using upcoming javascript/ES6-Harmony generators
60 lines (48 loc) • 1.66 kB
JavaScript
//"use strict";
var util = require("util");
var dns = require("dns");
var wait = require("wait.for-es6");
var parallel = require("../parallel");
// ----------------------
// DNS TESTS --------
// ----------------------
function* getReverse(addr){
return yield wait.for(dns.reverse,addr);
}
function* parallel_reverse(hostname){
console.log('\n\n---------------------------');
console.log('parallel_reverse');
console.log('---------------------------');
console.log('\ndns.resolve4 ',hostname);
var addresses = yield wait.for(dns.resolve4,hostname);
console.log("\naddresses: ",JSON.stringify(addresses));
var reversed = yield wait.for(parallel.map, addresses, getReverse);
console.log("\nreversed : ",JSON.stringify(reversed));
}
function* sequential_reverse(hostname){
console.log('\n\n---------------------------');
console.log('sequential_reverse');
console.log('---------------------------');
console.log('dns.resolve4 ',hostname);
var addresses = yield wait.for(dns.resolve4,hostname);
console.log("addresses: ",JSON.stringify(addresses));
for (var i = 0; i < addresses.length; i++) {
console.log(yield wait.for(dns.reverse,addresses[i]));
};
}
// -------------------
// RUN TESTS (Fiber)--
// -------------------
function* runTests(hostname){
// test 1
yield wait.runGenerator ( parallel_reverse ,hostname );
// test 2
yield wait.runGenerator ( sequential_reverse ,hostname);
}
// MAIN
try{
wait.launchFiber(runTests,"google.com");
}
catch(e){
console.log("Error: " + e.message);
};