Our JavaScript primer (Chapter 3, A JavaScript Primer) covered all the important concepts to let us start building our application. But there is one fundamental aspect of JavaScript programming worth exploring in more detail: asynchronicity.
Chapter 1, Why Node.js?, discussed the asynchronous programming model of Node.js. It described the consistent approach used throughout Node.js APIs and third-party libraries. Recall that each asynchronous method takes a callback function that gets passed error and result arguments, for example, the fs.stat
function we saw in Chapter 1, Why Node.js?:
fs.stat('/hello/world', function (error, stats) { console.log('File last updated at: ' + stats.mtime); });
However, the callback pattern has some weaknesses. Performing error handling and combining results from multiple asynchronous operations can become quite clumsy. There are alternative asynchronous patterns available in JavaScript that address these issues. The idea...