当前版本的Node.js是否有对Promise的本地支持?
Node.js使用V8引擎。Chrome也使用此JavaScript引擎,而Chrome
32具有对Promise的本机支持。但是我似乎无法获得在Node.js中(本机)工作的承诺。
我已经在Chrome 32中尝试了以下代码,并且可以正常工作。
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.js中尝试相同的代码时,我得到:
var promise = new Promise(function(resolve, reject) {
^
ReferenceError: Promise is not defined
此代码来自出色的教程:
http://www.html5rocks.com/zh-
CN/tutorials/es6/promises/
如果节点使用的是Chrome 32使用的相同或更高版本的V8,则很可能会自然支持它。否则,您将需要加载“
es6-shim”
(我建议先加载es5-shim)。我不知道当前版本的节点正在使用哪个V8版本。
在我的节点上安装
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,并且很难确定节点支持哪种JavaScript版本,这使得很难确定可以使用哪些功能。这就是我所知道的。 节点使用V8 V8实现了ECMA-262,第3版中指定的ECMAScript ECMA-262,第三版是JavaScript 1.5 鉴于此,我假设我可以在节点中使用JavaScript 1.5兼容代码。但是,事实证明我可以使用,以及其他结构,即使根据MDC,
问题内容: 我有一些要更新的旧Node.js代码。在此过程中,我正在设计新模块以与旧代码一起使用。我发现现在,与我最初写这篇文章时相反,我更多地依赖使用ES6 Promise,而不是回调。所以现在我混合了一些函数,这些函数返回Promise和一些采用回调-这很乏味。我认为最终应该重构使用诺言。但是在那之前… 在什么情况下首选promise和回调在哪里? 在某种情况下,回调能比承诺更好地处理吗,反之
问题内容: 我的机器上运行了一个简单的node.js程序,我想获取运行该程序的PC的本地IP地址。如何使用node.js获得它? 问题答案:
寻找Web套接字实现的Hello World类型示例: 下面是来自PHP.NET的套接字创建引用,但这看起来比Web套接字更低级。 我想使用这个Web套接字,如caniuse.com上所示,现在所有新的主要浏览器都实现了这个套接字。 实际上,教程中有一个到PHPWebSockets的断链...这是应该使用的库吗? websockets.org有一个测试应用程序,但没有提到PHP。
我正在尝试让Spring 4.1.9和Thymeleaf 2.1.5渲染XHTML Basic 1.1页面,它们具有以下序言: 简单地在模板中使用它是行不通的,因为百里香叶不能识别doctype。 org . thyme leaf . exceptions . templateprocessingexception:使用public id "-//W3C//DTD XHTML Basic 1.1/
刚接触Git不久,误操作把Git 的本地分支文件夹给Shift delete了,本地分支还没有commit和push到Server远程分支上去,现在没有本地分支,如何删除Server上的远程分支呢? 似乎没有Push过本地分支,无法直接删除远程分支