Articles of ecmascript harmony

如何在node.js中使用promise

所以,我有一个承诺支持nodejs: $ node -v v0.11.11 但是,当我尝试使用承诺我有一个错误: $ 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 源代码在我的要点 我做错了什么? 此外,我尝试运行生成器示例 ,它的工作,所以这意味着es6function启用,除了承诺

在heroku上运行最新的不稳定nodejs(例如0.11.6)

我没有多less运气find答案: 在现有的应用程序上安装/运行heroku上最新的nodejs版本最简单的方法是什么? 有如下所述的package.json引擎的使用: https : //devcenter.heroku.com/articles/nodejs-support 但是这不包括最新的不稳定的0.11.x分支,这是我之后的分支。

生成器 – thunkifying JSON.parse返回奇怪的结果

我正在尝试使用co和生成器来读取JSON文件。 test.json包含: { "hello": "world" } 这通过jsonlint所以它应该是有效的。 目前这里是我的代码: #!/usr/bin/env node –harmony var co = require('co'), fs = require('fs'), thunkify = require('thunkify'); var read = thunkify(fs.readFile); var JSONParse = thunkify(JSON.parse); var log = console.log.bind(console); co(function *(){ var fileContents = yield read('test.json', 'utf-8'); var works = yield JSONParse(fileContents) log(works) })() 只有一个空的对象被logging。 然而, fileContents已满,所以它似乎是破碎的JSON.parse部分。 我究竟做错了什么?

EcmaScript产量的优先级6

我有一个函数build ,同步返回一个对象,这又包含一个函数run 。 这个函数返回一个thunk,因此可以使用yield和一个库(如co来调用。 基本上这个电话是这样的: yield build().run(); 现在,问题是,我想确保yield是指run ,而不是build 。 我如何做到这一点,而不需要像下面的代码片段那样引入一个临时variables? var temp = build(); yield temp.run(); 有任何想法吗? PS:我在Node.js 0.11.x上使用' – harmony'标志运行这段代码。

~~运营商的Javascript

我在一些Node.js Harmony代码中遇到了一个“this”关键字之前的运算符,特别是与Koa web框架一起工作。 示例代码如下: app.use(function *(){ var n = ~~this.cookies.get('view') + 1; this.cookies.set('view', n); this.body = n + ' views'; }); 一个常规的谷歌search没有出现,所以我很困惑。 我唯一可以肯定的是,它是该代码片段的function所必需的,因为代码在被移除时停止工作。 任何洞察力将赞赏与确定这个外星人运营商的目的。

为什么使用–harmony在Node.js中抛出一个错误?

在Chrome Canary和Node.js 0.12.3中,以下代码打印出p 。 'use strict'; let o = { name: 'o', foo: function() { ['1'].map(function() { console.log(this.name); }.bind(this)); }, }; let p = { name: 'p' }; o.foo.call(p); // p 在Chrome Canary中,以下代码也会打印出p 。 但为什么它会抛出一个types错误在Node.js 0.12.3与–harmony标志? 'use strict'; let o = { name: 'o', foo: function() { ['1'].map(() => { console.log(this.name); }); }, }; let […]

Javascript代理:节点代理,和谐,混合对象与魔法getter和setter …在Coffeescript?

我想有一个代理对象的方法和私有variables附加​​到它。 也就是说,所有正常的对象属性: foo = {} foo.bar = "baz" foo.boo = "hoo" 与一些原型: foo.setPrivateThings = function(value){ if (value) private = value; return private; } 枚举跳过私有variables/函数: console.log(foo); // { bar: "baz", boo: "hoo" } get / set将通过一个神奇的getter / setter来运行: foo.doesntexist = "…" = function(key){ console.log "Setting "+key; return new Date(); } 到目前为止,我有这个使用节点代理hokey Coffeescript。 任何更好的答案? class Data constructor: […]

dynamic服务定位器在JavaScript中?

我正在尝试使用Harmony代理(Node.js)获得用JavaScript编写的dynamic服务定位器。 基本上你会创build一个新的容器: var container = new Container(); 然后,您就可以像传统的服务定位器一样设置和获取值: container.set('FM', {}); container.get('FM'); container.get('FM', function(FM) { }); 你甚至可以拥有像子对象一样的命名空间: container.set('FM.Object', {}); 问题在于dynamic别名。 var App = container.alias('App'); 创build别名时,会创build一个新的代理对象,您可以像传统对象那样操作它,但它是get()和set()方法的别名。 代替: container.get('App.Hello'); 有了别名,你可以使用: App.Hello 问题在于深名称空间。 假设你试图访问App.Hello.World.Controller ,因为它一次通过代理一个命名空间,而不是一次全部(像那个完整的命名空间)。 如何知道用户是否正在调用App.Hello来检索存储在服务定位器中的值,或者如果用户想要继续访问更深的命名空间? 你不能(从我试过的)。 你还能用其他方法来完成这个吗? 具有语法App.Hello.World ,它将返回一个代理,如果它将访问一个更深的命名空间,或者存储在服务定位器中的值。 var App = container.alias('App'); App.Controller.Home.Method.Index // It would go through: App -> Proxy App.Controller -> Proxy or Value? App.Controller.Home […]

testingnodejs和声生成器方法

假设你有以下的JSfunction: function YourProxy($orm, $usr) { this.addToDB = function(obj) { /* Do some validation on obj */ return function(callback){ var oo = $orm.createNew(obj); oo.save(options, function(err,ok){ if(err) callback(err); callback(null,ok); } } } } 你可以在node.js上使用ES6生成器来等待这个操作发生,如下所示: function *(){ var yourProxy = new YourProxy(); try { var result = yield yourProxy.addToDB(anObject); } catch(e) { /* Something went wrong sync. Here […]

任何人都可以在他们的Node.js REPL中使用let语句吗?

可能吗? 在我的REPL中,似乎没有工作,没有–harmony也没有。 我真的想做的是使用for..of循环,但似乎更简单的事情排除故障,可能是相同的原因。 任何人都知道这些的状态?