6 ms·
Promises are better than being stuck in callback hell, but ES7 async functions (async/await) are way better: http://www.sitepoint.com/simplifying-asynchronous-c
by iyn 11y ago
Promises are better than being stuck in callback hell, but ES7 async functions (async/await) are way better: http://www.sitepoint.com/simplifying-asynchronous-coding-es7-async-functions/ http://www.sitepoint.com/simplifying-asynchronous-coding-es7...
The best part: you can use it today with babel (I'm using it in browser and on node thanks to the power of webpack, babel and hot reloading).
- iamstef 11y agoI agree, async/await is very nice. Though it is worth pointing out async/await is quite literally syntactic sugar on top of promises. Essentially adding language syntax for common promise idioms.
- bluepnume 11y agoMore than just syntactic sugar. async/await changes the whole control flow of a method.
- callahad 11y agoYou can actually get identical semantics, and almost identical syntax, by abusing ES6 generators, so it is just syntactic sugar: https://gist.github.com/callahad/b99c83d6d9fd675137b7 https://gist.github.com/callahad/b99c83d6d9fd675137b7
- conical 11y agoDoes the phrase "syntactic sugar" have any meaning? Name a new language feature that "it is just syntactic sugar" can't be applied to.
- callahad 11y agoSure, ES6 WeakMap and WeakSet can't be implemented without native support in the runtime. Or, for that matter, const. Though perhaps const is just syntatic sugar for not reassigning to the same darn name? ;)
- conical 11y agoConst is a pretty good example, the closest I can think to emulating it in es5 is something like: Object.defineProperty(this, 'five', { enumerable: true, writable: false, value: 5, configurable: false }); If in global scope, 'five' will look like a const. WeakMap and WeakSet have polyfills with minor caveats. I guess you're defining language features as not "syntactic sugar" if they can't be absolutely 100% polyfilled.
- bluepnume 11y agoAgreed, it's syntactic sugar over es6 generators. But I don't agree that it's just syntactic sugar over promises, which is what the parent comment asserted.
- iamstef 11y agoYes, by introducing (extremely handy) syntactic sugar ;)
- AgentME 11y agoasync/await works with promises, it doesn't replace them.
- tracker1 11y agoI think it's important to understand this, as when you are interacting with other modules that return promises, you need to know that you can await those, as well as that async functions return promises that can be used as them without being inside another async function.