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

By: (plus.google.com) +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.

(medium.freecodecamp.com) 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.

(www.2ality.com) Tips for using async functions (ES2017) An excellent tour of best practices for using async functions.

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

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

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

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

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

(medium.com) Using ES6 array destructing with Promises

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

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

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

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

(ponyfoo.com) Understanding JavaScript’s async await

(stackoverflow.com) 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

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

(stackoverflow.com) 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

(blog.shaunxu.me) ES7 Async/Await in Node.js with Babel.js

(tc39.github.io) https://tc39.github.io/ecmascript-asyncawait/ - Home page for the committee developing async/await for JavaScript

(hackernoon.com) 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 Amiga Android Anti-Fascism Apple Apple Hardware History Apple iPhone Hardware April 1st Arduino ARM Compilation Astronomy Asynchronous Programming Authoritarianism Automated Social Posting Bells Law Big Brother Black Holes Blade Runner Blogger Blogging Books Botnet Botnets Cassette Tapes Cellphones Christopher Eccleston Chrome Chrome Apps Chromebook Chromebooks Chromebox ChromeOS CIA CitiCards Civil Liberties Clinton Cluster Computing Command Line Tools Computer Hardware Computer Repair Computers Cross Compilation Crouton Curiosity Rover Cyber Security Cybermen Daleks Darth Vader Data backup Data Storage Database Database Backup Databases David Tenant DDoS Botnet Detect Adblocker Digital Photography DIY DIY Repair Docker Doctor Who Doctor Who Paradox Drobo Drupal Drupal Themes DVD Early Computers Election Hacks Electric Bicycles Electric Vehicles Electron Emdebian Enterprise Node ESP8266 Ethical Curation Eurovision Event Driven Asynchronous Express Facebook Fake News File transfer without iTunes FireFly Fraud Freedom of Speech Gallifrey git Gitlab GMAIL Google Google Chrome Google Gnome Google+ Government Spying Great Britain Home Automation HTTPS I2C Protocol Image Analysis Image Conversion Image Processing ImageMagick InfluxDB 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 Joyent Lets Encrypt LibreOffice Linux Linux Hints Linux Single Board Computers Logging Mac OS Mac OS X Make Money Online MariaDB Mars Matt Lucas MEADS Anti-Missile Mercurial Michele Gomez Military Hardware Minification Minimized CSS Minimized HTML Minimized JavaScript Missy Mobile Applications MODBUS Mondas 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 Online advertising Online Fraud Open Media Vault Open Source Governance Open Source Software OpenAPI OpenVPN Personal Flight Peter Capaldi Photography PHP Plex Media Server Political Protest Postal Service Power Control Privacy Production use Public Violence Raspberry Pi Raspberry Pi 3 Raspberry Pi Zero Recycling Remote Desktop Republicans Retro-Technology Reviews Right to Repair River Song Rocket Ships RSS News Readers rsync Russia Russia Troll Factory Scheme Science Fiction Season 1 Season 10 Season 11 Security Security Cameras Server-side JavaScript Shell Scripts Silence Simsimi Skype Social Media Warfare Social Networks Software Development Space Flight Space Ship Reuse Space Ships SpaceX Spring Spring Boot SQLite3 SSD Drives SSD upgrade SSH SSH Key SSL Swagger Synchronizing Files Telescopes Terrorism The Cybermen The Daleks The Master Time-Series Database Torchwood Total Information Awareness Trump Trump Administration Ubuntu UDOO Virtual Private Networks VirtualBox VLC VNC VOIP Web Applications Web Developer Resources Web Development Web Development Tools Weeping Angels WhatsApp Wordpress YouTube