nodejslearnerfiles
Version:
Very Good Beginnings if you want to Learn Node.js
70 lines (55 loc) • 1.77 kB
JavaScript
var maxTime = 1000;
// if input is even, double it
// if input is odd, return error.
// ( call takes random amount of time < 1 sec )
var evenDoubler = function(v, callback) {
var waitTime = Math.floor(Math.random()*(maxTime+1));
if(v%2) {
setTimeout(function (){
callback(new Error("Odd Input"),null,waitTime);
}, waitTime);
} else {
setTimeout(function (){
callback(null, v*2, waitTime);
}, waitTime);
}
};
// handleResults is a named function.
// a callback function usually have errors in the beginning and results at the end.
var handleResults = function(err, results, time) {
if (err) {
console.log("ERROR: "+ err.message +" ("+ time + "ms)" );
} else {
console.log("The results are : "+ results + " ("+ time + "ms)");
}
};
// Calling the Asynchrnous function with callbacks, which means, once it is ready with "evenDoubling", it will invoke the "callback" function.
for (var i=0; i<10 ; i++) {
console.log('calling evenDoubler for value: '+ i);
evenDoubler(i, handleResults);
}
console.log("............");
/* output
calling evenDoubler for value: 0
calling evenDoubler for value: 1
calling evenDoubler for value: 2
calling evenDoubler for value: 3
calling evenDoubler for value: 4
calling evenDoubler for value: 5
calling evenDoubler for value: 6
calling evenDoubler for value: 7
calling evenDoubler for value: 8
calling evenDoubler for value: 9
............
The results are : 12 (28ms)
ERROR: Odd Input (221ms)
The results are : 8 (311ms)
The results are : 16 (343ms)
The results are : 0 (397ms)
ERROR: Odd Input (535ms)
ERROR: Odd Input (550ms)
ERROR: Odd Input (562ms)
The results are : 4 (694ms)
ERROR: Odd Input (812ms)
Process exited with code: 0
*/