写点什么

Node 7.6 默认支持 Async/Await

  • 2017 年 3 月 02 日
  • 本文字数:862 字

    阅读完需:约 3 分钟

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


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

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

2017 年 3 月 02 日 18:005055

评论

发布
暂无评论
发现更多内容

《MongoDB实战》.pdf

田维常

电子书

《CSS权威指南》.pdf

田维常

电子书

《啊哈!算法》.pdf

田维常

电子书

《阿里巴巴Java 开发手册》.pdf

田维常

电子书

Java-技术专题-多线程之线程池

浩宇天尚

《系统架构:复杂系统的产品设计与开发》.pdf

田维常

电子书

《Java虚拟机并发编程》.pdf

田维常

电子书

为什么阿里的程序员成长如此之快?看完Alibaba“Java成长笔记”我懂了!

Java架构追梦

Java 学习 架构 面试 成长笔记

《图解HTTP》.pdf

田维常

电子书

《大话设计模式》.pdf

田维常

电子书

《Java性能优化全新指南》.pdf

田维常

电子书

《Redis实战》.pdf

田维常

电子书

《Git权威指南》.pdf

田维常

电子书

《图解Java多线程设计模式》.pdf

田维常

电子书

《编写高质量代码——改善Java程序的151个建议》.pdf

田维常

电子书

《MySQL技术内幕(第5版)》.pdf

田维常

电子书

《实战Nginx:取代Apache的高性能Web服务器》.pdf

田维常

《重构:改善既有代码的设计》.pdf

田维常

电子书

《程序员必读之软件架构》.pdf

田维常

电子书

基于 Flink SQL CDC 的实时数据同步方案

Apache Flink

测试攻城狮必备技能点!一文带你解读DevOps下的测试技术

华为云开发者社区

敏捷开发 测试 瀑布流

​《自己动手做大数据系统》.pdf

田维常

电子书

《精通Spring MVC4》.pdf

田维常

电子书

《Redis入门指南》.pdf

田维常

电子书

【涂鸦物联网足迹】物联网基础介绍篇

IoT云工坊

人工智能 云计算 物联网 云平台 AIOT

阿里对Java候选人的面试考察重点,面P7必问(收藏备用)

小Q

Java 学习 架构 面试 高并发

帮助企业摆脱困境,名企归乡工程师:能成功全靠有它!

Learun

敏捷开发 快速开发 企业开发 企业应用

《大数据之路:阿里巴巴大数据实践》.pdf

田维常

电子书

《Java EE设计模式:Spring企业级开发最佳实践》.pdf

田维常

电子书

《数据结构与算法分析:Java语言描述》.pdf

田维常

电子书

颠覆!阿里5位P8大佬分享进阶王者500修炼手册,修三门课程

996小迁

Java 程序员 架构 面试

Node 7.6默认支持Async/Await_JavaScript_Sergio De Simone_InfoQ精选文章