在节点7.4中使用async / await

我认为节点7.4支持asynchronous/等待,但是这个例子不起作用:

const Promise = require('bluebird'); async function main(){ await Promise.delay(1000) } main(); 

结果是:

 async function main(){ ^^^^^^^^ SyntaxError: Unexpected token function 

我如何使用asynchronous/等待节点7.4?

在Node.js v7中支持asynchronous等待,但locking在harmony标志后面。 还没有准备好的产品就在这个标志后面。

要在Node.js v7中使用asynchronous等待,只需使用此标志运行Node服务 –

node --harmony-async-await app.js

asynchronous等待的正式版本将在四月份推出的Node.js v8中预定。

您可以按照此拉取请求来检查其状态。 基本上,asynchronous等待的正确function取决于将V8引擎v5.5集成到Node.js中。 目前Node.js使用V8 v5.4,这是通过这个pull请求来解决的。

更新1 – 看来V8 v5.5可能会来Node.js v7。 按照这个拉请求更多的细节。

更新2 – 好消息家伙! Node.js版本7.6.0现在正式支持asyncfunction,而不使用--harmony标志,因为V8引擎5.5已成功移植。

现在只需要使用--harmony标志,如果你的Node.js版本在7.0到7.5.0(含)之间。 有关完整的更新日志请参考

Node.js 7.6.0几个小时前发布,他们包括V8 5.5。 现在你可以使用asynchronous/等待没有标志。

你将需要和谐的标志为此工作。

再次尝试使用node --harmony-async-await myscript.js

节点版本7.6现在支持asynchronous/等待开箱即用。 如果你还没有尝试过,你应该马上采纳它,永远不要回头。

  const makeRequest = () => getJSON() .then(data => { console.log(data) return "done" }) makeRequest() 

并使用asynchronous/等待:

 const makeRequest = async () => { console.log(await getJSON()) return "done" } makeRequest()