当前版本的Node中是否存在对promise 的本机支持.js?

node .js使用V8引擎.Chrome也使用这个JavaScript引擎,Chrome 32本身就支持promise .但我似乎无法得到在Node中(以本机方式)工作的promise .js.

我在Chrome 32中try 了以下代码,效果很好.

var promise = new Promise(function(resolve, reject) {
  // do a thing, possibly async, then…

  if ( 1===1 /* everything turned out fine */) {
    resolve("Stuff worked!");
  }
  else {
    reject(Error("It broke"));
  }
});

promise.then(function( message ) {
  console.log( message );
},
function( err ) {
  console.log( err );
});

然而,当我在Node中try 同样的代码时.js,我明白了:

var promise = new Promise(function(resolve, reject) {
                   ^
ReferenceError: Promise is not defined

这段代码来自优秀教程:

http://www.html5rocks.com/en/tutorials/es6/promises/

推荐答案

如果node使用的是Chrome 32使用的V8的相同或更高版本,那么它可能是本机支持的.否则您将需要加载'es6-shim'(我建议先加载es5-shim).我不知道当前版本的node使用的是哪个版本的V8.

在我的 node 上安装

node --version
v0.10.24

node -e 'console.log(process.versions.v8);'
3.14.5.9

Chrome V32使用的是什么版本?(我使用的是Chromium v27),因此必须找到文档,但可能是3.22.24.16

查找chrome://version/似乎提供了信息

Chromium    27.0.1453.93 (Developer Build 200836) Built from source for Fedora release 19 (Schrödinger’s Cat)
OS  Linux 
WebKit  537.36 (Unknown URL@0)
JavaScript  V8 3.17.6.14
Flash   11.2 r202
User Agent  Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36
Command Line     /usr/lib64/chromium-browser/chromium-browser --enable-plugins --enable-extensions --enable-user-scripts --enable-printing --enable-sync --auto-ssl-client-auth --flag-switches-begin --enable-sync-favicons --enable-full-history-sync --sync-keystore-encryption --flag-switches-end
Executable Path /usr/lib64/chromium-browser/chromium-browser
Profile Path    /home/graham/.config/chromium/Profile 1
Variations  b03ddc1f-2d9ef0cc
f9b252d0-fd526c81
ff3fc1a6-766fa2d
7f6da4bf-70d6abf1
75f7fb7e-611a9f49
262f996f-42d3ce07
24dca50e-455c9cca
ca65a9fe-91ac3782
3028188e-626278e
5e29d81-cf4f6ead
246fb659-6754d7b7
f296190c-72d8285f
4442aae2-4ad60575
75f0f0a0-a5822863
e2b18481-6e3b1976
e7e71889-e1cc0f14

现在从Chrome安装

Google Chrome   32.0.1700.107 (Official Build 248368) 
OS  Linux 
Blink   537.36 (@165586)
JavaScript  V8 3.22.24.17
Flash   12.0.0.44
User Agent  Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36
Command Line     /usr/bin/google-chrome-stable --flag-switches-begin --flag-switches-end
Executable Path /opt/google/chrome/google-chrome
Profile Path    /home/graham/.config/google-chrome/Default
Variations  b178bdde-887f97ea
24dca50e-837c4893
8d790604-9cb2a91c
5a3c10b5-e1cc0f14
244ca1ac-4ad60575
5e29d81-cf4f6ead
3ac60855-486e2a9c
246fb659-bd104136
f296190c-38939ee9
4442aae2-6e597ede
ed1d377-e1cc0f14
75f0f0a0-e1cc0f14
e2b18481-6e597ede
e7e71889-4ad60575

Node.js相关问答推荐

使用Moongose处理node.js中重定向的then()块链

容器端口是容器内 node 应用程序的端口吗?

express返回意外的URL

如何将Node.js与Nuxt.js一起使用?

AWS-ROUTE 53指向S3存储桶,错误是别名目标名称不在目标区域内

在 puppeteer 中从 pdf 中删除 about:blank 和 date-time

2023年如何在Node.js中使用Gmail发送邮箱?

mongoose findOneAndUpdate 不更新数据库

NodeJS `request` 库无法通过 multipart-form-data 将文件发布到 dotnet 服务器

suppress AWS SDK v2 弃用消息

为什么我的 Cypress Post 请求的请求正文是空的?

使用 Node.js 在 MongoDB 中搜索

Web3.js 脚本在监听 CreatedPairs 时退出

使用服务帐户将 Firebase 应用程序部署到 Heroku(使用 dotenv 的环境变量)

Mongodb v4.0 Transaction, MongoError: Transaction numbers are allowed on a replica set member or mongos

Chrome 浏览器未将 if-modified-since 标头发送到服务器

如何在不全局安装的情况下在 Node REPL 中要求 node 模块?

从目录 node Js 中检索文件

NODEJS 进程信息

tsconfig.json 中模块类型的区别