UNPKG

laps

Version:

Simple flow-control lib for Node.js: combine sync/async steps, organize your spaghetti-code

93 lines (88 loc) 3.47 kB
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();