【问题标题】:How to use promise in node.js [duplicate]如何在node.js中使用promise [重复]
【发布时间】:2014-04-16 06:19:06
【问题描述】:

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

$ node -v
v0.11.11

但是当我尝试使用 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

my gist中的源代码

我做错了什么?此外,我尝试运行 generators example 并且它正在工作,所以这意味着除了 promises 之外启用了 es6 功能

【问题讨论】:

标签: javascript node.js promise ecmascript-harmony


【解决方案1】:

Promises 仅在几个月前(10 月,IIRC)登陆 V8。您运行的节点版本落后于该版本的 V8。

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

【讨论】:

  • @user568109 我喜欢你如此自信地对 Andreas 这么说,而你显然没有费心去查看 - 特别是因为 Andreas 是 TC39 成员和从事 V8 工作的 Google 工程师。在这里 - code.google.com/p/v8/source/browse/trunk/src/promise.js ,他唯一弄错的是 10 月日期,因为 v8 有更长时间的承诺(更不用说 Mark Miller 在 v8 中的实验了)。不过,这不会改变另一个问题的答案(相似但不同)。
  • @Benjamin 哎呀,我刚刚读了你的答案。我之前在 Chrome 中使用过 Promise,但无法在 node.js 中使用它。这使我认为它们是特定于 Chrome 的。我直到现在才检查这种情况。谢谢。
  • @BenjaminGruenbaum,我实际上实现了 V8 承诺 ;-)。我刚查了一下,第一个版本是 11 月 27 日发布的(应该是 V8 3.23.14)。
  • @AndreasRossberg 感谢您的回答,我会期待 node.js 中的 V8 更新
  • @user568109,历史是 Promise 最早出现在 DOM 中,后来(去年年中)才被 ES 采用。这就是他们首先出现在 Blink 中的原因(目前的 Chrome 仍然使用 Blink 版本,但我们正在迁移过来)。
猜你喜欢
  • 2016-05-04
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 2021-08-12
  • 2019-05-24
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多