laps
Version:
Simple flow-control lib for Node.js: combine sync/async steps, organize your spaghetti-code
93 lines (88 loc) • 3.47 kB
JavaScript
var dns = require('dns');
var Laps = require('../../lib');
function testLapsFull(){
console.log('TEST LAPS FULL');
new Laps().lap(function() {
this.exec('host', 'unknown');
dns.resolve4('unknown.unk', this.cb('resolve', 'unknown'));
this.exec('host', 'microsoft');
dns.resolve4('microsoft.com', this.cb('resolve', 'microsoft'));
this.exec('host', 'google');
dns.resolve4('google.com', this.cb('resolve', 'google'));
setImmediate(this.cb('wait'));
}).on('start', function() {
console.log('Start test');
}).on('begin', function() {
console.log('Lap started, lap: ' + this.lap());
}).cmd('wait', function() {
console.log('Waiting callbacks, lap: ' + this.lap());
}).cmd('host', function(type) {
console.log('Start host processing, host: ' + type);
}).cmd('resolve', function(type, err, addresses) {
if (err) throw err;
for (var i = 0; i < addresses.length; i++) {
var adr = addresses[i];
dns.reverse(adr, this.cb('reverse', type, adr));
};
}).cmd('reverse', function(type, adr, err, data) {
if (err) throw err;
console.log(type + ', reverse for ' + adr + ': ' + JSON.stringify(data));
}).on('error', function(err) {
console.log('Error: ' + err.message);
//this.cancel();
}).on('end', function() {
var err = this.err(), errStr = (err) ? (', error: ' + err.message) : ('');
console.log('Lap ended: ' + this.lap() + errStr);
//if (err) this.cancel();
}).on('finish', function() {
console.log('End test');
})
.run()
.run();
}
function testLaps(){
console.log('TEST LAPS');
new Laps().lap(function() {
dns.resolve4('unknown.unk', this.cb('resolve', 'unknown'));
dns.resolve4('microsoft.com', this.cb('resolve', 'microsoft'));
dns.resolve4('google.com', this.cb('resolve', 'google'));
}).cmd('resolve', function(type, err, addresses) {
if (err) throw err;
for (var i = 0; i < addresses.length; i++) {
var adr = addresses[i];
dns.reverse(adr, this.cb('reverse', type, adr));
};
}).cmd('reverse', function(type, adr, err, data) {
if (err) throw err;
console.log(type + ', reverse for ' + adr + ': ' + JSON.stringify(data));
}).on('error', function(err) {
console.log('Error: ' + err.message);
}).run();
}
function testNode(){
console.log('TEST NODE');
var error = function(err) {
console.log('Error: ' + err.message);
};
var reverse = function(type, adr) {
return function(err, data) {
if (err) return error(err);
console.log(type + ', reverse for ' + adr + ': ' + JSON.stringify(data));
}
};
var resolve = function(type) {
return function(err, addresses) {
if (err) return error(err);
for (var i = 0; i < addresses.length; i++) {
var adr = addresses[i];
dns.reverse(adr, reverse(type, adr));
};
}
};
dns.resolve4('unknown.unk', resolve('unknown'));
dns.resolve4('microsoft.com', resolve('microsoft'));
dns.resolve4('google.com', resolve('google'));
}
testLapsFull();
//testLaps();
//testNode();