Promisees – JavaScript Promises Visualization(github.com)
github.com
Promisees – JavaScript Promises Visualization
https://github.com/bevacqua/promisees
15 comments
I 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.
More than just syntactic sugar. async/await changes the whole control flow of a method.
You 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
Agreed, 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.
Does the phrase "syntactic sugar" have any meaning? Name a new language feature that "it is just syntactic sugar" can't be applied to.
Sure, 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? ;)
Or, for that matter, const. Though perhaps const is just syntatic sugar for not reassigning to the same darn name? ;)
Const 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.
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.
Yes, by introducing (extremely handy) syntactic sugar ;)
async/await works with promises, it doesn't replace them.
I 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.
can someone explain to me is ES7 tied to the browser version/type, or usually all the popular browsers support it out of the box?
because I couldn't find any information on that
because I couldn't find any information on that
It's complicated. ES6/7 support isn't binary. But sites like this help: http://caniuse.com/
http://kangax.github.io/compat-table/es6/ and http://kangax.github.io/compat-table/es7/ are particularly good for ES since it breaks out things into the nitty gritty features, providing the code samples that are tested.
Like other web standards, these things tend to get implemented in a piecemeal fashion according to consensus and demand. By the time the standards are published, much of their content is already implemented in modern browsers.
For example, the ES6 spec was just published a few months ago, so it will still be a year before we see ES7. In spite of that, the async / await capabilities are sufficiently compelling and agreed upon that patches are already being reviewed for Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1185106
Kangax's tables, linked in another reply, are a great way to check what the support situation is like across browsers.
For example, the ES6 spec was just published a few months ago, so it will still be a year before we see ES7. In spite of that, the async / await capabilities are sufficiently compelling and agreed upon that patches are already being reviewed for Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1185106
Kangax's tables, linked in another reply, are a great way to check what the support situation is like across browsers.
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).