Useful reading to understand the Promises, Generators and the async/await feature for Node.js/JavaScript

By: ( +David Herron; Date: 2016-11-20 17:01

Tags: Node.JS » Asynchronous Programming

The long-awaited async/await feature for JavaScript promises to make our lives much easier. Instead of asynchronous JavaScript programming being tricky and error-prone, with async/await our code will look like regular synchronous code we write in other languages, but will accommodate asynchronous code execution while retaining the single-threaded nature of JavaScript. With this feature we declare async functions, and within their boundary magic occurs - we can put the "await" keyword in front of a function which produces a Promise, and automagically JavaScript will wait for the Promise to resolve and give us the result or else throw the error. What follows is a list of posts describing how to use async/await.

Also included are links to posts about Promises and Generators. Together the three give us a rich tapestry of capabilities to simplify asynchronous programming, make our code look cleaner and more robust.

( Write Modern Asynchronous Javascript using Promises, Generators, and Coroutines Shows several ways to use Generators in an Express application. He suggests that since co(function* () { }) is so similar to async functions, and much more widely available, that we should start using those today.

( Tips for using async functions (ES2017) An excellent tour of best practices for using async functions.

( ES proposal: asynchronous iteration A proposal (don't get too excited yet) for asynchronous looping structures.

( Three useful Babel presets Lists several useful Babel tools to enable certain experimental features in JavaScript, including the async/await feature.

( promise-sequential "Like Promise.all, but sequentially"

( JavaScript Promise API An excellent tour of the Promise object and the best practices for its use.

( Understanding JavaScript Promises, Pt. I: Background & Basics A good introduction to Promise's.

( Using ES6 array destructing with Promises

( The Hidden Power of ES6 Generators: Observable Async Flow Control An in-depth look at Generator functions.

( Retrofitting Node/NPM Packages with Async/Await. Rewriting your code to use async/await

( Error handling in long Promise chains "The longer the chain the easier it is to break it"

( Promises, Promises (or how not to lose your marbles) Some best practices for using Promise's.

( Understanding JavaScript’s async await

( Installing Babel V6.x ES7 Async/Await on Node.js v6.2.0 with Nodemon A Stack Overflow question about using Babel to transpile async/await

( Using ES7 Async/Await in Node.js & Babel.js

( Get the value of a Javascript Promise in a synchronous way An excellent discussion of why we need async/await to simplify asynchronous programming in JavaScript

( ES7 Async/Await in Node.js with Babel.js

( - Home page for the committee developing async/await for JavaScript

( Node.js Tip - Minimal Babel with Node v6 The precise minimum steps required to setup Babel with Node.js 6.12 to use async/await.

« Asynchronous array operations in ES7 JavaScript async/await functions Memory-efficient CSV transformation in Node.js »
2016 Election Acer C720 Ad block AkashaCMS Amazon Amazon Kindle America Amiga Android Anti-Fascism AntiVirus Software Apple Apple Hardware History Apple iPhone Apple iPhone Hardware April 1st Arduino ARM Compilation Astronomy Asynchronous Programming Authoritarianism Automated Social Posting Ayo.JS Bells Law Big Brother Big Finish Bitcoin Mining Black Holes Blade Runner Blockchain Blogger Blogging Books Botnet Botnets Cassette Tapes Cellphones Christopher Eccleston Chrome Chrome Apps Chromebook Chromebooks Chromebox ChromeOS CIA CitiCards Citizen Journalism Civil Liberties Clinton Cluster Computing Command Line Tools Comment Systems Computer Hardware Computer Repair Computers Cross Compilation Crouton Cryptocurrency Curiosity Rover Currencies Cyber Security Cybermen Daleks Darth Vader Data backup Data Storage Database Database Backup Databases David Tenant DDoS Botnet Detect Adblocker Developers Editors Digital Photography Diskless Booting Disqus DIY DIY Repair DNP3 Do it yourself Docker Docker MAMP Docker Swarm Doctor Who Doctor Who Paradox Drobo Drupal Drupal Themes DVD E-Books E-Readers Early Computers Election Hacks Electric Bicycles Electric Vehicles Electron Emdebian Encabulators Energy Efficiency Enterprise Node EPUB ESP8266 Ethical Curation Eurovision Event Driven Asynchronous Express Facebook Fake News Fedora VirtualBox File transfer without iTunes FireFly Flickr Fraud Freedom of Speech Gallifrey git GitKraken Gitlab GMAIL Google Google Chrome Google Gnome Google+ Government Spying Great Britain Heat Loss Hibernate Hoax Science Home Automation HTTP Security HTTPS Human ID I2C Protocol Image Analysis Image Conversion Image Processing ImageMagick In-memory Computing InfluxDB Infrared Thermometers Insulation Internet Internet Advertising Internet Law Internet of Things Internet Policy Internet Privacy iOS Devices iPad iPhone iPhone hacking Iron Man Iternet of Things iTunes Java JavaScript JavaScript Injection JDBC John Simms Journalism Joyent Kaspersky Labs Kindle Kindle Marketplace Lets Encrypt LibreOffice Linux Linux Hints Linux Single Board Computers Logging Mac Mini Mac OS Mac OS X Machine Learning Machine Readable ID macOS MacOS X setup Make Money Online March For Our Lives MariaDB Mars Matt Lucas MEADS Anti-Missile Mercurial Michele Gomez Micro Apartments Military Hardware Minification Minimized CSS Minimized HTML Minimized JavaScript Missy Mobile Applications MODBUS Mondas Monetary System MongoDB Mongoose Monty Python MQTT Music Player Music Streaming MySQL NanoPi Nardole NASA Net Neutrality Node Web Development Node.js Node.js Database Node.js Testing Node.JS Web Development Node.x North Korea npm NVIDIA NY Times Online advertising Online Community Online Fraud Online Journalism Online Photography Online Video Open Media Vault Open Source Open Source Governance Open Source Licenses Open Source Software OpenAPI OpenVPN Paywalls Personal Flight Peter Capaldi Photography PHP Plex Plex Media Server Political Protest Postal Service Power Control Privacy Production use Public Violence Raspberry Pi Raspberry Pi 3 Raspberry Pi Zero Recycling Refurbished Computers Remote Desktop Republicans Retro Computing Retro-Technology Reviews Right to Repair River Song Robotics Rocket Ships RSS News Readers rsync Russia Russia Troll Factory Russian Hacking SCADA Scheme Science Fiction Search Engine Ranking Season 1 Season 10 Season 11 Security Security Cameras Server-side JavaScript Shell Scripts Silence Simsimi Skype SmugMug Social Media Social Media Warfare Social Networks Software Development Space Flight Space Ship Reuse Space Ships SpaceX Spear Phishing Spring Spring Boot SQLite3 SSD Drives SSD upgrade SSH SSH Key SSL Stand For Truth Swagger Synchronizing Files Telescopes Terrorism The Cybermen The Daleks The Master Time-Series Database Torchwood Total Information Awareness Trump Trump Administration Trump Campaign Ubuntu Udemy UDOO Virtual Private Networks VirtualBox VLC VNC VOIP Web Applications Web Developer Resources Web Development Web Development Tools Web Marketing Website Advertising Weeping Angels WhatsApp Window Insulation Windows Windows Alternatives Wordpress World Wide Web Yahoo YouTube YouTube Monetization