我认为节点7.4支持async / await,但是这个例子不起作用:
const Promise = require('bluebird');
async function main(){
await Promise.delay(1000)
}
main();
结果:
async function main(){
^^^^^^^^
SyntaxError: Unexpected token function
如何在节点7.4中使用async / await?
答案 0 :(得分:49)
是的。在Node.js v7中支持async-await,但它被锁定在harmony
标志后面。尚未生产的功能就在这面旗帜的背后。
要在Node.js v7中使用async-await,只需使用此标志运行节点服务 -
node --harmony-async-await app.js
async-await的官方发布将定于Node.js v8,将于4月推出。
您可以按照this拉取请求检查其状态。基本上async-await的正确运行取决于V8引擎v5.5与Node.js的集成。目前Node.js使用V8 v5.4,这是通过此拉取请求解决的。
更新1 - 似乎V8 v5.5可能会来到Node.js v7。请关注this拉取请求以获取更多详细信息。
更新2 - 好消息! Node.js版本7.6.0现在正式支持async
函数而不使用--harmony
标志,因为V8引擎5.5已成功移植。
现在,如果Node.js版本介于7.0到7.5.0(含)之间,则只需要使用--harmony
标志。有关完整的更改日志,请参阅here。
答案 1 :(得分:14)
Node.js 7.6.0几个小时前发布,它们包括v8 5.5。 现在你可以使用没有标志的async / await。
答案 2 :(得分:2)
你需要和谐标志才能发挥作用。
使用node --harmony-async-await myscript.js
答案 3 :(得分:2)
节点版本7.6现在支持async / await开箱即用。如果你还没有尝试过,你应该立即采用它,永远不要回头。
const makeRequest = () =>
getJSON()
.then(data => {
console.log(data)
return "done"
})
makeRequest()
使用async / await:
const makeRequest = async () => {
console.log(await getJSON())
return "done"
}
makeRequest()
答案 4 :(得分:0)
我遇到了同样的问题,我使用下面的命令安装了asyncawait
npm install asyncawait
之后,我使用下面的命令
声明了await和asyncconst async = require('asyncawait/async');
const await = require('asyncawait/await');
然后在需要的地方使用了这些,但是我的命令在async(my-code) & await(my-code)
之内。
对我来说效果很好。