I'm just messing around with the v0.11
branch of node, and I'm wondering why I can't use the native ES6 Promise
object, even with --harmony
turned on.
My normal chrome browsers:
Google Chrome 32.0.1700.77 (Official Build 244503)
JavaScript V8 3.22.24.10
Supports them, and node.js v0.11.11
is telling me:
> process.versions.v8
'3.22.24.19'
So what gives?
I'm just messing around with the v0.11
branch of node, and I'm wondering why I can't use the native ES6 Promise
object, even with --harmony
turned on.
My normal chrome browsers:
Google Chrome 32.0.1700.77 (Official Build 244503)
JavaScript V8 3.22.24.10
Supports them, and node.js v0.11.11
is telling me:
> process.versions.v8
'3.22.24.19'
So what gives?
Share Improve this question asked Feb 13, 2014 at 12:17 user578895user578895 4- 2 Promises currently in Chrome are DOM Futures. Also, they're very experimental and the API might change (it's quite heavily discussed atm). Consider using Bluebird promise instead as they're faster, have better stack traces and stable. – Benjamin Gruenbaum Commented Feb 13, 2014 at 12:18
- So basically because it's a DOM api and not a javascript API. – mpm Commented Feb 13, 2014 at 12:19
- 1 @mpm there are promises in ES6, they're just not 'settled' yet - the Chrome people are quite angry too : esdiscuss/topic/promise-cast-and-promise-resolve#content-77 – Benjamin Gruenbaum Commented Feb 13, 2014 at 12:21
-
@BenjaminGruenbaum -- Well that explains why node doesn't have them, but why are they considered part of the DOM??? I've been using
q
forever, this isn't an issue of me wanting to find a library, just curious why it didn't work. If you post an answer, I'll accept it :) – user578895 Commented Feb 13, 2014 at 12:21
1 Answer
Reset to default 10Native Promises are in, you can now use them. They're still slower and harder to debug than libraries like Bluebird but they're there.
Promises currently in Chrome are DOM Futures. Also, they're very experimental and the API might change (it's quite heavily discussed atm).
Consider using Bluebird promise instead as they're faster, have better stack traces and are stable.
It is consdierably faster than libraries like Q
(two orders of magnitude faster) it has much better stack traces and a pletely spec pliant API. You may of course also pile node and v8 yourself - there are promises in v8 itself.
There are promises in ES6, they're just not 'settled' yet - making the Chrome people are quite angry too
They're considered part of the DOM too because future DOM APIs will use promises.