你好,游客 登录 注册 搜索
背景:
阅读新闻

Node.js 7.6默认支持Async/Await

[日期:2017-03-03] 来源:infoq.com  作者:Sergio De Simone ,译者 谢旭 [字体: ]

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) => {});

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

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

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-03/141289.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款