如何在node.js中使用promise

jus*_*ris 1 javascript node.js promise ecmascript-harmony

所以,我有一个支持promises的nodejs:

$ node -v
v0.11.11
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用Promises时,我有一个错误:

$ node --harmony test.js
require, module, __filename, __dirname) {         var promise = new Promise(fu
                                                                ^
ReferenceError: Promise is not defined
    at Object.<anonymous> (/home/just-boris/coding/test.js:1:89)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:349:32)
    at Function.Module._load (module.js:305:12)
    at Function.Module.runMain (module.js:490:10)
    at startup (node.js:123:16)
    at node.js:1128:3
Run Code Online (Sandbox Code Playgroud)

我的要点中的源代码

我做错了什么?此外,我尝试运行生成器示例并且它正在工作,因此这意味着es6功能已启用,但承诺除外

And*_*erg 5

几个月前(10月,IIRC),承诺只落在了V8.您运行的节点版本落后于该版本的V8.

编辑:更正,第一个版本登陆11月底,成为V8 3.23.14.

  • @ user568109我喜欢你对安德烈亚斯这么自信的说法,你显然没有费心去检查 - 特别是因为安德烈亚斯是TC39成员和谷歌工程师在V8工作.在这里 - https://code.google.com/p/v8/source/browse/trunk/src/promise.js,他唯一错误的是自v8承诺以来的十月日期(更不用说Mark Miller的实验了) v8)更长时间.但这并没有改变另一个问题的答案(相似但不同). (4认同)
  • @ user568109,历史是承诺首先出现在DOM中,并且后来(去年年中)才被ES采用.这就是为什么他们首先出现在Blink中(目前的Chrome仍然使用Blink版本,但我们正在迁移过程中). (3认同)
  • @BenjaminGruenbaum,我实际上实施了V8承诺;-).我刚刚检查过,第一个版本于11月27日登陆(本应该成为V8 3.23.14). (2认同)