Node 7.6默认支持Async/Await

Node.js 7.6正式默认支持async/await功能,并能够使低内存设备获得更出色的性能。

\\

Node 7.6对async/await的支持来自于将V8(Chromium JavaScript引擎)升级至版本5.5。这意味着async/await不再是实验性功能,使用它时无需指定--harmony参数,此参数用来开启那些几乎已完成但被V8团队认为还不稳定的功能。

\\

Async/await的主要益处是可以避免回调地狱(callback hell)问题,该问题源于把一系列异步操作嵌套于它们各自的回调函数里。

\\

下面代码演示了如何使用回调函数来处理两个异步操作:

\\
\function asyncOperation(callback) {\  asyncStep1(function(response1) {\    asyncStep2(response1, function(response2) {\        callback(...);\    });\  });\}\
\\

使用async/await可以简化代码,使代码看起来就像同步操作:

\\
\async function asyncOperation(callback) {\    const response = await asyncStep1();\    return await asyncStep2(response);\}\
\\

解决回调地狱的另一种方法是使用Promises,它是JavaScript里存在很久的一个特性。使用Promises,上面的例子则变成:

\\
\function asyncOperation() {\  return asyncStep1(...)\    .then(asyncStep2(...));\}\
\\

但是在一些更为复杂的场景中,Promises这种方法会变得很笨重

\\

V8 5.5还对堆大小和区域使用(zone usage)做出了若干改进。与V8 5.3相比,这些改进能使低内存设备的内存占用量降低多达35%。

\\

Node 7.6还有另一些值得注意的改进:

\\
\
  • 基于新调试器协议node --inspect重写旧CLI调试器node debug。在未来V8版本中,将只支持node --inspect。 \\
  • 支持file:相关协议已经加入fs,因此你可以写成fs.readFile(URL('file:///C:/path/to/file');, (err, data) =\u0026gt; {});\
\\

除了V8 5.5外,Node 7.6还包括了其它一些已经更新的依赖,比如跨平台的异步I/O库libuv 1.11和zlib 1.2.11。

\\

查看英文原文Node 7.6 Brings Default Async/Await Support

\\

感谢薛命灯对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值