The advent of async/await for Node.js - Node.js v7 has now arrived

; Date: Tue Oct 25 2016

Tags: Node.JS »»»» Asynchronous Programming

With today's first release of Node.js version 7, we now have async/await as a base feature of the platform. This is a significant milestone that wasn't even mentioned in the commit message. The async/await feature is so important that I'm preparing a short book to discuss JavaScript asynchronous programming patterns, that highly features async/await.

$ nvm install 7
Downloading https://nodejs.org/dist/v7.0.0/node-v7.0.0-darwin-x64.tar.xz...
######################################################################## 100.0%

That's how easy it is now to install Node.js version 7, if you have nvm installed. Implementing async/await is just a command line option away.

'use strict';

const fs    = require('fs-extra-promise');
const util  = require('util');

async function twofiles() {
    var texts = [
        await fs.readFileAsync('hello.txt', 'utf8'),
        await fs.readFileAsync('goodbye.txt', 'utf8')
    ];
    console.log(util.inspect(texts));
}

twofiles();

Try this code ... Run npm init to generate a package.json, and then: npm install fs-extra-promise --save

Finally, put suitable text into hello.txt and goodbye.txt ...

Your first attempt at running this might result in this:

$ node  2files.js
/Users/david/ebooks/Callbacks-Promises-Async/examples/asyncawait/2files.js:6
async function twofiles() {
      ^^^^^^^^
SyntaxError: Unexpected token function
    at Object.exports.runInThisContext (vm.js:76:16)
    at Module._compile (module.js:545:28)
    at Object.Module._extensions..js (module.js:582:10)
    at Module.load (module.js:490:32)
    at tryModuleLoad (module.js:449:12)
    at Function.Module._load (module.js:441:3)
    at Module.runMain (module.js:607:10)
    at run (bootstrap_node.js:382:7)
    at startup (bootstrap_node.js:137:9)
    at bootstrap_node.js:497:3

That's because you're missing a flag. The async/await feature is behind a --harmony flag. Run this instead:

$ node --harmony-async-await 2files.js
[ 'Hello, world!\n', 'Goodbye, world!\n' ]

Have fun. Ponder the code above. It is so fetchingly simple, yet does asynchronous execution. This is our future. I'll shortly have an initial version of my book available.

About the Author(s)

(davidherron.com) David Herron : David Herron is a writer and software engineer focusing on the wise use of technology. He is especially interested in clean energy technologies like solar power, wind power, and electric cars. David worked for nearly 30 years in Silicon Valley on software ranging from electronic mail systems, to video streaming, to the Java programming language, and has published several books on Node.js programming and electric vehicles.

Books by David Herron

(Sponsored)